一、区块链中的协议有哪些类型,区块链中最常用的两种协议
GHOST,DAG,SPECTRE,PHANTOM和CONFLUX技术原理
??DAG概念,当做继比特币,以太坊后新的一代区块链技术(区块链3.0),那么DAG区块链是什么?DAG的由来是什么?它的技术理念是怎么样的?运行在DAG区块链上的协议有哪些?
??要想解释DAG,离不开YonatanSompolinsky和AvivZohar两位以色列人,他们是DAG区块链这一概念的提出者。在DAG之前,AvivZohar提出了一个GHOST协议(以太坊初期就采用了GHOST协议),该协议解决的是链分叉带来的安全性问题,而分叉的区块链在GHOST协议下数据结构就从一条链变成了一个树(Tree),而之后AvivZohar进一步提出了一个inclusive协议,在inclusive协议规则下,区块的结构就变成了有向无环图(DAG)。
接下来本文将:
??1.介绍GHOST协议,DAG由来背后的设计原理
??2.介绍三种针对DAG型区块链设计的协议,SPECTRE、PHANTOM和CONFLUX。
??GHOST协议是为了解决分叉导致链安全性降低的一个协议。
??下边将通过解释什么是分叉,为什么分叉会降低链的安全性,链上扩容为什么会导致更多分叉来详细介绍GHOST协议。
一笔比特币交易为什么要等6个区块的交易时长呢?
??等待不是为了防范51%攻击的。落后6个区块,如果拥有超过51%的算力,只要足够长的时间,一定能够产生更长的链完成攻击。它是为了防止分叉带来的风险。
??比特币在理想情况下,不同节点之间有相同的一条区块链,全部节点都是基于同一个区块进行挖矿,但当两个挖矿节点几乎同时挖到一个新的区块,当它们接收到对方产生的区块时,不同的节点将选择基于其中一个区块挖矿,分叉产生了。之后节点会根据哪条分叉更长,选择哪条是主链进行挖矿,而不是主链的分叉区块全部被抛弃。
??比特币每天都会发生二分叉,但出现连续的六次分叉几乎不可能,于是要等待6个区块的确认时间。(这种分叉不是来自恶意攻击,是偶然性以及网络延迟导致的。
分叉将‘攻击不超过51%算力,比特币就是安全的’这一理论推翻。
??在比特币中,当链有分叉时,将选择分叉最长的链作为主链,恶意攻击就是产生一条比主链更长的链代替主链。
??下图中蓝色区块代表诚实区块,红色代表攻击区块。2号、3号蓝色区块产生分叉,此时攻击节点产生5个攻击区块(红色)就能产生一条更长的链完成攻击。虽然蓝色区块总数更多(有6个),但分叉的区块没有增加链的长度,这种情况下,红色攻击方在算力(假设每个区块代表算力相同)没有超过51%的情况下攻击成功。
??比特币当前安全的原因在于10分钟的区块时间降低了分叉可能性,但其实际安全算力仍低于51%,也就是说,不需要51%的算力也能攻击成功。
??采用大区块以及小的产出时间将导致链有很多分叉。??
??比特币当前处理交易量很低,改进这个缺陷一个可行方法就是增大区块的大小和减小区块的产出时间。大区块需要更多的网络传输时间、单位时间更多的区块数都会导致更多的分叉。??
??链上扩容的方案对比特币处理交易能力提升是巨大的,假如每个区块大小变为原来的八倍(8M),出块时间缩短为原来的五分之一(2分钟),理想情况下,比特币的处理交易量将变为原来的40倍,实际情况会产生分叉,交易量不会有这么高。
??主链选择中,采用计算最大子树来代替比特币中的最长链规则。??
??比特币的最长链规则在有分叉情况下,将降低链的安全性,分叉越多,安全性越低。链上扩容将导致更多分叉,导致链不安全。
??YonatanSompolinsky提出GHOST规则,当有分叉时,通过计算最大子树,也就是每条分叉拥有的所有区块数来决定哪条链是主链。图0中,链在区块0后分叉了,上边分叉总计有6个蓝色区块,下边分叉有5个红色区块,蓝色区块1是主链,所以红色攻击失败。??
??在有大量分叉的情况下,GHOST规则将链安全性直接提到了51%,分叉对采用GHOST协议的链安全性没有影响。
??根据GHOST规则,上图中虽然诚实节点产生了12个区块,但加入主链的只有4个区块,大量区块被丢弃,假定比特币每个区块大小变为原来的八倍(8M),出块时间缩短为原来的十分之一(1分钟),分叉率为0.33(产生的区块加入主链的概率),比特币的处理交易能力将变为原来的26.6倍。
GHOST协议解决了链上扩容导致分叉带来的安全性问题。
区块的结构类型就从一条链变为树
??在GHOST的提出后,YonatanSompolinsky提出一种新的设想,新产生的区块指向所有已知的分叉末端区块,即一个区块有多个父亲,此时区块链就从一条链变为多条分叉链共同组成的的结构,这样的链结构就被叫做DAG(有向无环图)。
YonatanSompolinsky进而提出了在DAG上运行的inclusive协议,原理如下:
遗憾的是,YonatanSompolinsky之后并没有详细介绍补充该协议,而是提出了一种新思路的DAG协议——SPECTRE。
??看完上边内容之后,你会发现,最长链规则下,分叉的区块对比特币安全性和交易量没有任何贡献,白白的浪费了算力,而GHOST通过计算分叉区块个数来提升链的安全性,但分叉区块除了纳入区块计数外,区块内包含的交易信息却全部被丢弃。
??这种新的区块结构带来了新的特性,当然,比特币的最长链规则也可以在DAG上实施,只不过安全性和处理交易能力不佳,而GHOST协议可以提高安全性和处理交易能力,为了最大化利用DAG区块链特性,社区提出了不同的协议,接下来介绍YonatanSompolinsky提出的SPECTRE协议,以及PHANTOM协议,以及国内某社区提出的CONFLUX协议。
丢弃主链概念,所有产生的区块共同构成账本,不丢弃任何一个区块
??只要是产生的区块就不会被丢弃,所有的区块都是有效的,所有区块共同组成账本,这样进一步提高了区块链的处理交易能力,该设计的关键在于设计算法来保证区块链不会被恶意攻击成功。??
??SPECTRE协议较为复杂,下边将从其如何产生区块、如何处理冲突交易以及产生可信交易集三个方面进行描述。
SPECTRE协议中,当产生区块时,要指向之前所有分叉的末端区块。
??下图中,左边为比特币产生区块时,当有分叉出现,新区块将选择基于其中一个产生新的区块,而SPECTRE中,将基于所有分叉末端区块产生新的区块。同时,当有新区块产生时,节点要立刻将新区块(包含基于哪些区块产生这一信息)发送给与自己相连接的节点。
??仔细观察,GHOST协议中虽然有分叉,但每个区块都只基于前边某一个区块产生,而SPECTRE协议中要基于当前节点知道的所有末端区块产生下一个区块。
SPECTRE协议将矿工维持交易不冲突的要求剥除??
??比特币就像一本权威的账本,只要是里边记录的,就一定是真的(不考虑分叉和恶意攻击),而SPECTRE产生的DAG就像一本不权威账本,里边的交易信息可能冲突(上边图1中两个1区块中可能包含冲突交易信息)。??
??该协议下,挖矿节点只负责迅速挖区块(能够达到1秒一个区块),而对分叉中可能包含的冲突交易在挖矿阶段并不做任何处理,将记录交易速度最大化,让DAG这种区块链有着恐怖的处理交易能力。
??是时候解决挖矿不解决的冲突交易问题了,SPECTRE的思路是设计一个计算投票的算法,让诚实区块会投票给诚实的区块,后边的诚实区块会给前边的堆叠算力,从而让恶意攻击失败,其安全算力也是51%。??
??拿双花举例,下图中,X和Y区块中包含着两条冲突交易会导致双花,此时DAG中的区块会对X和Y进行投票,决定哪一个交易有效。
投票规则如下,投X的标蓝,投Y的标红,XY代表X先于Y:
??根据投票结果,X中的那条交易信息有效,Y中对应的那条交易信息无效。??YonatanSompolinsky也对不指向前边区块以及产生区块不发给邻居节点的恶意攻击有进行分析,在投票规则中,低于50%算力的攻击者会失败。??
??投票听起来像是一个主动地中心化行为,实际上不是,程序根据当前DAG区块所处的状态自发完成这一区块投票计算过程,就相当于,给定一个DAG数据,输入为两条冲突信息,运行该规则算法,将得出一对冲突交易的哪一个为有效。
SPECTRE可信交易集就相当于超过当前6个区块的比特币链里组成的交易集合。??区块链从数字加密货币的角度来说,就是一个账本,从账本上的交易信息中得出每个账户所拥有的货币,所以,得出确定的、不可能更改的交易信息就至关重要,SPECTRE可信交易集产生过程如下:
SPECTRE并不会对所有区块进行排序,所有区块没有一个完整的线形顺序,有的只是决定冲突信息先后的区块顺序对。??
??比特币中的高度代表的就是线形顺序,高度低的区块中交易信息先于高度高的区块里的信息,高度高的区块就不能包含和高度低的区块冲突的交易,而SPECTRE有大量的分叉,区块高度不能代表线形顺序,前边的区块交易信息不一定先于后边的分叉区块交易信息,交易信息的有效性要由投票算法来决定,区块投票算法很快,再加上它将所有分叉区块都包含进来,也就没有了比特币所面临的分叉风险(等待6个区块),交易确认时间可以达到10秒。
至此,和比特币相比,SPECTRE对应的DAG区块链有三个特点:
??SPECTRE协议非常适合DAG型数字加密货币,但当它用于智能合约时,它的缺陷就出来了,智能合约需要一个严格的线性顺序,对此YonatanSompolinsky新设计了PHANTOM协议来对DAG区块形成一个线性顺序,下边将详细介绍PHANTOM协议。
SPECTRE和PHANTOM是两个完整的独立的协议,不是一个对另一个的补充。
??PHANTOM的挖矿机制和SPECTRE一样,会产生同样类型的DAG,不同的是PHANTOM通过对区块连通度分析,判定区块诚实还是恶意,按照分类对区块排序,对DAG区块产生一个严格的线性顺序,通过线性顺序来判断冲突交易有效性。
DAG中,攻击者有两种攻击手段,一产生的区块不基于已知的末端区块,二不立即发布自己产生的区块,前者会让自己区块指向的区块变少,后者让其他节点产生的区块不会指向自己的区块,这两种情况都会导致这些恶意区块的与其它区块的连接度低。
??诚实区块在考虑网络最大延迟下,经过一定时间一定会传遍整个网络,一定会被后边的区块所指向,诚实节点在产生新区块时也一定会指向自己所知道的末端区块。
??通过对区块指出去的边和指向该区块的边进行分析,也就是区块的连通度,当考虑最大的网络延迟,连通度会有一个极限值K,低于该值的区块可以被认定为恶意区块,在排序中要处于劣势。
接下来,进行区块诚实和恶意判定,判定分两步,第一步最重要,实现复杂也耗费时间,主要为通过对区块连通度的判定,将强连通度的区块标为蓝色视为诚实区块,弱的标为红色视为恶意区块。
??第二步先对蓝色区块集排序,拓扑排序,然后对红色区块集排序。红色区块的顺序要处于弱势,例如上图中C,它处于A和I之间,那么它的顺序会排在I的前一个区块,而D、H都会排在C前。注意通过考虑最大延迟时间设定连通度的值,几乎所有正常诚实节点产生的区块都会被标记为蓝色
??至此,PHANTOM协议实现了对DAG的线性排序,通过线性顺序就可以提取无冲突交易集,进而提取可信交易集,虽然耗时较长,满足智能合约的要求。
??YonatanSompolinsky在PHANTOM协议论文结尾,提出一种将PHANTOM+SPECTRE结合起来的可能协议,没有详细展开介绍。下图是几种协议的对比:
??至此,介绍了YonatanSompolinsky一开始从分叉导致不安全提出的GHOST,到后来将DAG引入区块链,设计了SPECTRE协议,以及为智能合约考虑的PHANTOM协议。接下来,介绍国内某社区提出的CONFLUX协议。
??GHOST有主链但丢弃分叉区块;SPECTRE没有主链,包含所有分叉,但没有线性顺序;PHANTOM没有主链,包含分叉且有线性顺序,而CONFLUX即有主链,又是DAG,利用主链让DAG产生线性排序,下面将从挖矿机制和区块排序两方面来说明CONFLUX协议。
??CONFLUX协议定义了根源边和参考边。新区块是基于前一个主链区块产生的,新区块用根源边(实线)指向前一区块,用参考边(虚线)指向分叉的其他区块末端,如下图最后一个新区块实线指向H,虚线指向分叉末端区块K。根源边用于代表区块基于哪个区块产生,给哪个区块堆叠算力,参考边用于表示分叉的其它区块产生在该区块之前。
挖矿过程如下:
根源边只能有一条,参考边可多条(视情况而定)
以主链区块为分割点,将DAG分段,段间段内设计简单排序算法
??CONFLUX协议下产生的区块链如上(图2),接下来对其进行线性排序,排序算法如下:
??通过上述排序,DAG有了一个线性顺序,上图DAG区块顺序为Genesis,A,B,C,D,F,E,G,J,I,H,andK。接下来对该线性顺序的区块里的交易信息进行交易排序,单一区块里可能包含的冲突交易将直接按照该区块内交易信息排列先后顺序决定。
??至此,CONFLUX对DAG所有区块产生一个线性顺序,进而可以对区块内交易信息排序,产生无冲突交易集,超过一定时间的无冲突交易组成可信交易集。主链只是排序的标尺,作为分割时段的标准,CONFLUX包含所有分叉区块。
GHOST论文
Inclusive论文
SPECTRE论文
PHANTOM论文
CONFLUX论文
DAGlabs相关讲解视频合集
区块链使用什么网络协议?
协议是管理网络的一组规则。区块链协议通常包括共识、交易验证和网络参与的规则。协议通常依赖于经济激励——这意味着协议取决于某项资产。
通常,协议级别的资产也可以作为协议的本地产品(无需平台!)比特币就是一个很好的例子。Bitcoin(大写B)是指协议。协议取决于本地资产:bitcoin(小写字母b)。这个本地资产也被用作最终产品:它是用户的支付手段,价值储存,以及(说实话)一定程度上的炒作手段。请注意,比特币并不真正提供一个平台。对于那些试图在其上建立新产品的开发者来说,这并不是很友好。
另一方面,以太坊则存在着三个层次。这是一个协议,提供基本的规则。这是一个平台,使开发人员能够在系统上构建新的产品。而且,因为它的协议中包含一项本地资产,所以它也得到了一个内置的产品(以ether以太币的形式)。
区块链的应用领域有数字货币、通证、金融、防伪溯源、隐私保护、供应链、娱乐等等,区块链、比特币的火爆,不少相关的top域名都被注册,对域名行业产生了比较大的影响。
区块链技术中协议层包含了什么内容?
重庆市金窝窝分析区块链中的协议层包含的内容有:从用到的技术来说,协议层主要包括网络编程、分布式算法、加密签名、数据存储技术等4个方面。
区块链—FT、NFT、ERC-20协议和ERC-721协议
FT即同质化代币,同质化的加密货币构成了目前市场上大部分的代币。
FT以这样的方式配置的数字资产——即每个代币(或代币的碎片)与下一个代币等同。
可替代性是法定货币中的一个特征。例如,一张20美元的钞票可以兑换成任何其他20美元的钞票,甚至可以兑换成零头。即使不是绝对的20美元钞票,它也可以是5美元钞票的倍数,甚至更少,总之总量等于20美元。
?
??NFT即非同质化代币,非同质化代币通常是指开发者在以太坊平台上根据ERC-721标准/协议所发行的代币。用来描述一种独特的数字资产,它的所有权是在区块链上可以进行溯源的。
??NFT是唯一的、不可拆分的token,所有的艺术品,不管是图书文字、音乐或是影像…等各种形式,甚至是数字化的收藏品与线上游戏都可以通过NFT的特殊认证方式来验证其独特与稀有价值。
因此NFT与传统经济体系中的收藏品相比具有不同的特征:
?
?
官方说明文档地址:
??ERC20标准以太坊上的一个代币协议,所有基于以太坊开发的代币合约都遵守这个协议。
?
?
?
账户A有1000个ETH,想允许B账户随意调用100个ETH。
?
官方说明文档:
?
??ERC-721兼容了ERC-20的一些特性,与ERC-20的主要区别是定义了token的owner,即每个token都详细记录它历史的拥有者,以及定义了token的Metadata,即元数据。ERC-721还需要实现ERC165中的接口。
?
?
?
??Metadata用于定义单个代币的唯一特征,为一个特定的代币ID提供描述性信息。以加密猫为例,每只加密猫都有不同的颜色、形状、名称等。
?
?
?
?tokenId:在合约内唯一的NFTID,在NFT的生命周期中不可改变(要实现全链唯一的必须用(contractAddr,tokenId)组成的元组)
?name:名称,类似于ERC-20的名称
?symbol:符号,类似于ERC-20的符号
?uri:指向外部信息的链接,一般是一个JSON,而在JSON中有进一步更加具体的信息
?
?
如有不对,烦请指出,感谢~
区块链技术和tcp/upd的区别
TCP(TransmissionControlProtocol)和UDP(UserDatagramProtocol)协议属于传输层协议。其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;而UDP则不为IP提供可靠性、流控或差错恢复功能。
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法。区块链相当于90年代的互联网,比特币、普银等数字货币都是区块链的应用。
区块链,4种类型,知多少?
——你好,我是心态,专注分享对区块链的认知与投资思考。希望能帮到你。
区块链根据不同的使用需求和场景,区块链分为:公有链、联盟链、私有链和混合链4种类型。
1.公有链
公有链,是指全世界任何节点的任何人,在任何地理位置,都可以进入系统读取数据、发送交易、竞争记账等参与共识的区块链。没有任何机构或个人可以篡改其中的数据,因此公有链是完全去中心化的。
比特币和以太坊都是公有链的代表。公有链一般通过发行代币(Token)来鼓励参与者竞争记账(即挖矿),以确保数据的安全性和共识更新。
比特币平均每10分钟产生1个区块,且其POW机制很难缩短区块时间,POS机制相对而言可缩短区块时间,但更易产生分叉。所以交易需要等待更多确认才被认为安全。
一般认为,比特币中的区块经过6个确认后才是足够安全的,这大概需要1个小时。这样的确认速度难以满足商业级的应用。因此,ETH及EOS等支持更多写入速度的公有链正在不断发展。
2.联盟链
联盟链是指有若干机构共同参与和管理的区块链,每个机构都运行N个节点。
联盟链的数据只允许系统内不同的机构进行读写和交易,通过数字证书的方式实现基于PKI的身份管理体系交易或提案的发起,以参与方共同签名验证来达成共识,因此不需要工作量证明(POW),也不存在数字货币(代币),提高了交易达成的效率,节约了大量计算成本(算力硬件投入和电力能源消耗)。
通常情况下,参与联盟链的节点会被划分不同的读写权限,能支持每秒1000次以上的数据写入。
3.私有链
私有链与公有链完全去中心化不同,私有链的进入权限由某个组织进行控制,各个节点参与资格由该组织授权控制。
由于参与的各个节点是有限且可控的,私有链往往拥有很快的处理速度,能支持每秒1000以上的数据写入,同时降低内部各个节点的交易成本。
节点可以实名参与,因此具有确认身份的金融属性。私有链的价值主要是提供安全、可追溯、不可篡改、自动执行的运算平台,可以同时防范来自内部和外部对数据的安全攻击或篡改,这在传统的系统中是很难做到的。
私有链的应用场景一般在企业内部,如分公司的库存管理,各地数据的汇总统计等,也可以用在政府的预算和执行等可以被公众监督的领域。大型金融集团目前也倾向于使用私有链技术。
4.混合链
当公有链和私有链的各自优势相结合时,就会出现混合链。混合链的开发难度大,但前景广阔。
未来市场上,一定会出现巨头型的底层技术和协议开发的公司,这些巨头公司会架设出不同用途的公有链、私有链或者联盟链,基于对性能和安全性及应用场景的不同需求,然后嫁接不同行业的应用。比如一条支持高并发的通信类公有链,一条侧重安全性的支付联盟链,等等。
(感谢阅读)
点个赞,点个关注,就是对我最大的支持,咱们明天见。
二、区块链私链如何变成公链
如何通俗解释区块链?
“区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人们的生产力,电力解决了人们基本的生活需求,互联网彻底改变了信息传递的方式,那么区块链作为构造信任的机器,将可能彻底改变整个人类社会价值传递的方式。”
刚刚接触区块链,有太多太多需要了解和知道的基础知识,大家先不要着急,今天给大家科普这些知识。今天咱们一起先来看看公链、私链、联盟链以及侧链到底是什么吧。
一、什么是区块链?
区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。其具有去中心化、公开透明、不可篡改、分布式存储、智能合约等特点。简言之,区块链就是一个分布式的公共账本技术。大家可以查看这个账本的内容,并参与账本的维护与更新。
二、公链、私链和联盟链的区别
区块链根据去中心化的程度,可以分为公链、私链和联盟链。
公链——完全去中心化,所有用户都可以读取、写入;
联盟链——部分去中心化,写入参与者被提前筛选,读写权限由被选定的参与者们决定;
私链——部分去中心化,写入权限仅在一个组织手里,读写权限由该组织决定;
公链是完全去中心化的,链上数据都是公开透明的,不可更改,任何人都可以通过交易或挖矿读取和写入数据。其典型代表就是比特币区块链,在比特币区块链上,任何人都可以在其链上进行交易,并且查看链上的所有交易信息。比如说虎妞可以在链上查看自己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算法,这些算法都是参与者的利益直接相关,通过利益来制约节点诚实的工作,解决分布式系统中的拜占庭问题。拜占庭容错算法是一种状态机副本复制算法,通过节点间的多轮消息传递,网络内的所有诚实节点就可以达成一致的共识。
使用拜占庭容错算法不需要发行加密货币,但是只能用于私有链或者联盟链,需要对节点的加入进行权限控制;不能用于公有链,因为公有链中所有节点都可以随意加入退出,无法抵挡女巫攻击(sybilattack)
raft算法包含三种角色,分别是:跟随者(follower),候选人(candidate)和领导者(leader)。集群中的一个节点在某一时刻只能是这三种状态的其中一种,这三种角色是可以随着时间和条件的变化而互相转换的。
raft算法主要有两个过程:一个过程是领导者选举,另一个过程是日志复制,其中日志复制过程会分记录日志和提交数据两个阶段。raft算法支持最大的容错故障节点是(N-1)/2,其中N为集群中总的节点数量。
国外有一个动画介绍raft算法介绍的很透彻,链接地址为:。这个动画主要包含三部分内容,第一部分介绍简单版的领导者选举和日志复制的过程,第二部分内容介绍详细版的领导者选举和日志复制的过程,第三部分内容介绍的是如果遇到网络分区(脑裂),raft算法是如何恢复网络一致的。
pbft算法的提出主要是为了解决拜占庭将军问题
要让这个问题有解,有一个十分重要的前提,那就是信道必须是可靠的。如果信道不能保证可靠,那么拜占庭问题无解。关于信道可靠问题,会引出两军问题。两军问题的结论是,在一个不可靠的通信链路上试图通过通信以达成一致是基本不可能或者十分困难的。
拜占庭将军问题最早是由LeslieLamport与另外两人在1982年发表的论文《TheByzantineGeneralsProblem》提出的,他证明了在将军总数大于3f,背叛者为f或者更少时,忠诚的将军可以达成命令上的一致,即3f+1=n。算法复杂度为o(n^(f+1))。而MiguelCastro(卡斯特罗)和BarbaraLiskov(利斯科夫)在1999年发表的论文《PracticalByzantineFaultTolerance》中首次提出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、公有区块链
公有区块链(PublicBlockChains)是指:世界上任何个体或者团体都可以发送交易,且交易能够获得该区块链的有效确认,任何人都可以参与其共识过程。公有区块链是最早的区块链,也是应用最广泛的区块链,各大bitcoins系列的虚拟数字货币均基于公有区块链,世界上有且仅有一条该币种对应的区块链。
2、联合(行业)区块链
行业区块链(ConsortiumBlockChains):由某个群体内部指定多个预选的节点为记账人,每个块的生成由所有的预选节点共同决定(预选节点参与共识过程),其他接入节点可以参与交易,但不过问记账过程(本质上还是托管记账,只是变成分布式记账,预选节点的多少,如何决定每个块的记账者成为该区块链的主要风险点),其他任何人可以通过该区块链开放的API进行限定查询。
3、私有区块链
私有区块链(PrivateBlockChains):仅仅使用区块链的总账技术进行记账,可以是一个公司,也可以是个人,独享该区块链的写入权限,本链与其他的分布式存储方案没有太大区别。传统金融都是想实验尝试私有区块链,而公链的应用例如bitcoin已经工业化,私链的应用产品还在摸索当中。
区块链中的公链是什么?
公链也称“公有链”,即指全世界任何人都可以随时进入到系统中读取数据、发送可确认交易、竞争记账的区块链。公有链通常被认为是“完全去中心化”的,因为没有任何个人或者机构可以控制或篡改其中数据的读写。而从应用上说,区块链公有链则主要包括比特币、以太坊、超级账本、大多数山寨币以及智能合约,其中区块链公有链的始祖则为比特币区块链,具有以下特点:
1、代码开源
代码上传到github,每个人都可以通过下载得到完整的区块链数据,接受大众的考验。
2、完全去中心化
任何人都可以成为一个节点,每一个节点都是公开的,每个人都可以参与区块链的计算,任何节点都不是永久的,而是阶段性的,任何中心对节点都不具有强制性。任何人都可读取的、且能发送交易,而且交易能够在区块链上得到有效的确认,任何人都可参与其中共识过程。共识过程决定某个区块可以添加到区块链中,以及确切的当前状态。每个人都可以从中得到经济奖励,和在共识过程中所作的贡献成正比。这些公有链通常被认为是“完全意义上的去中心化”。
3、开发去中心化应用
程序开发者通过此公链,可以很方便地开发出去中心化应用。公有链可以保护用户权益免受程序开发者的影响。
区块链的链分类
前两天有朋友微信上问了许多关于区块链的一些问题,其中一个问题就是区块链的这个链怎么去分类。区块链目前可以分为四类:公链,私链,联盟链以及侧链。北京木奇移动技术有限公司,专业的区块链外包开发公司,欢迎洽谈合作。下面带大家了解区块链这几个链各自的特点以及如何应用,希望对大家有所帮助。
1.公链——人人可参与
公链是指任何人都可读取的、任何人都能发送交易且交易能获得有效确认的、任何人都能参与其中共识过程的区块链。
公链采取了采取工作量证明机制(POW)、权益证明机制(POS)、股份授权证明机制(DPOS)等方式,并将经济奖励和加密数字验证结合了起来,并建立一个原则就是每个人从中可获得的经济奖励与工作量成正比。这些区块链通常被认为是完全去中心化的。
特性:
1.开源,由于整个系统的运作规则公开透明,这个系统是开源系统;2.保护用户免受开发者的影响,在公有链中程序开发者无权干涉用户,所以区块链可以保护使用他们开发的程序的用户;3.访问门槛低,任何拥有足够技术能力的人都可以访问,也就是说,只要有一台能够联网的计算机就能够满足访问的条件;4.所有数据默认公开,尽管所有关联的参与者都隐藏自己的真实身份,这种现象十分的普遍。他们通过他们的公共性来产生自己的安全性,在这里每个参与者可以看到所有的账户余额和其所有的交易活动。
案例:公有链中有许多我们熟悉的身影:BTC,ETH,EOS,AE,ADA等
2.私链——权利掌握在少数人手里
私链是指其写入权限仅在一个组织手里的区块链。读取权限或者对外开放,或者被任意程度地进行了限制。相关的应用囊括数据库管理、审计、甚至一个公司,尽管在有些情况下希望它能有公共的可审计性,但在很多的情形下,公共的可读性并非是必须的。
特性:
1.交易速度快,一个私链的交易速度可以比任何其他的区块链都快,甚至接近了并不是一个区块链的常规数据库的速度。这是因为就算少量的节点也都具有很高的信任度,并不需要每个节点来验证一个交易。2.隐私性好,给隐私更好的保障私有链使得在那个区块链上的数据隐私政策像在另一个数据库中似的完全一致;不用处理访问权限和使用所有的老办法,但至少说,这个数据不会公开地被拥有网络连接的任何人获得。3.交易成本低交易成本大幅降低甚至为零私有链上可以进行完全免费或者至少说是非常廉价的交易。如果一个实体机构控制和处理所有的交易,那么他们就不再需要为工作而收取费用。
案例:Linux基金会、R3CEVCorda平台以及GemHealth网络的超级账本项目(Hyperledgerproject)或在开发或在使用私链。
3.联盟链——部分去中心化
联盟链开放程度和去中心化程度是有所限制的。其参与者是被提前筛选出来或者直接指定的,数据库的读取权限可能是公开的,也可能像写入权限一样只限于系统的参与者。
特性:
1.交易成本低,交易只需被几个受信的高算力节点验证就可以了,而无需全网确认;2.节点容易连接,若是出了问题,联盟链可以迅速通过人工干预来修复,并允许使用共识算法减少区块时间,从而更快完成交易;3.灵活,如果需要的话,运行私有区块链的共同体或公司可以很容易地修改该区块链的规则,还原交易,修改余额等。
案例:瑞波用于日韩国际汇款及日本本国银行间汇款建立了联盟链,同时之前火过一阵子的迅雷链克也是一种半开放的联盟链。
4.侧链——拓展协议
侧链”从严格上来说,其本身并不是区块链,可以理解为区块链的一种扩展协议。早期“侧链”是为了解决比特币区块链技术的限制问题。侧链就像是一条条通路,将不同的区块链互相连接在一起,以实现区块链的扩展。侧链完全独立于比特币区块链,但是这两个账本之间能够“互相操作”,实现交互。
特性:
1.独立性,侧链架构的好处是代码和数据独立,不增加主链的负担,避免数据过度膨胀。侧链有独立的区块链,有独立的受托人或者说见证人,同时也有独立的节点网络,就是说一个侧链产生的区块只会在所有安装了该侧链的节点之间进行广播。2.灵活性,侧链所有的区块链参数是可以定制的,简单的比如区块间隔、区块奖励、交易费的去向等,高级用户还可以修改共识算法。
案例:LSK,RDN,ARDR等币种是利用的侧链技术。
对于目前整个数字货币领域而言,今年可能仍然是底层公有链项目的竞争大赛,原因是目前公链作为区块链的基础设施还是存在明显的不足,尚且无法实现真正的安全、可靠和高效。这也明显制约着整个区块链产业的发展。
什么是公链
公链也称“公有链”,而公有链是指全世界任何人都可读取、发送交易且交易能获得有效确认的、也可以参与其中共识过程的区块链。根据区块链网络中心化程度的不同,分化出3种不同应用场景下的区块链:
1、全网公开,无用户授权机制的区块链,称为公有链;
2、允许授权的节点加人网络,可根据权限查看信息,往往被用于机构间的区块链,称为联盟链或行业链;
3、所有网络中的节点都掌握在一家机构手中,称为私有链。
扩展资料:
根据区块链网络中心化程度的不同,分化出3种不同应用场景下的区块链:
(1)全网公开,无用户授权机制的区块链,称为公有链;
(2)允许授权的节点加人网络,可根据权限查看信息,往往被用于机构间的区块链,称为联盟链或行业链;
(3)所有网络中的节点都掌握在一家机构手中,称为私有链。
联盟链和私有链也统称为许可链,公有链称为非许可链。
参考资料来源:百度百科-公有链
三、什么叫私有链区块链
私有链是由多个机构共同参与管理的区块链需要获得许可吗
是。私有链是指其写入权限由某个组织和机构控制的区块链,是由多个机构共同参与管理的区块链需要获得许可,每个组织或机构管理一个或多个节点,其数据只允许系统内不同的机构进行。
区块链是什么
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,它是比特币的一个底层运用技术。传统的信息储存和交流都会经过一个服务器,也就是一个数据库,所有的信息都能在这个数据库里面找到或是修改。
区块链它包含有三种:公有链、联盟链、私有链。
1、公有链:是由每一个参与其中的人自由组成,任何人都可以随时进入或者退出,没有任何限制,但你进入或退出期间的信息都会被参与的人所知道或记录。
2、联盟链:是由多个人或多个团体自行组建的,而参与的人或是团体是事先指定,或是后期经过审核才能进入的,它是有一定的准入机制的,它信息的写入与读取权限也是由组建的人或团体就能决定的。
3、私有链:相当于个人或某一单位利用区块链的技术存储信息,只有他自己才有写入信息的权限,信息对外公不公开也可以由自己决定。
根据网络划分区块链的分类包括
法律分析:根据网络范围划分区块链的分类包括公有链、联盟链、私有链,具体如下:
1、公有链:主要是指部署在互联网范围之内,没有特别的一个权限的一个设置,也没有其他的一些什么登陆上的一些条件,任何人都可以直接下载节点来使用,任何人也可以直接通过一个客户端来连接一个节点,是没有什么限制的,其中的数据,也能够被任意的访问;
2、联盟链:也就是由若干个节点成员来组成的一个联盟网络,这种类型,主要是使用在商业环境之下,比如说多个商家之间,政府的政务,银行,税务等,他们可以共同组成一个联盟,为某一个具体的场景服务,比如说像企业跟他的客户之间,供应商之间等等可以形成一个联盟网络,联盟链相对于公有链来讲,它一般是有一个身份鉴权的,并不是所有人都可以直接来联入联盟链这个网络的,它有一个身份鉴权,同时对于数据也有一些更多的保护;
3、私有链:更多的是在企业的内部,比如一个集团企业,它的各个部门之间,它的子公司之间,从这个角度来说,这三种,它们的一个主要的区分在于针对不同的应用场景,针对一个网络的分布范围所形成的一个网络部署的差别,它是一个灵活的概念,这三者之间是根据不同的网络范围,根据应用场景的一个划分,并不是一个严格意义上的界定。
法律依据:《中华人民共和国网络安全法》
第一条为了保障网络安全,维护网络空间主权和国家安全、社会公共利益,保护公民、法人和其他组织的合法权益,促进经济社会信息化健康发展,制定本法。
第二条在中华人民共和国境内建设、运营、维护和使用网络,以及网络安全的监督管理,适用本法。