如何区分区块链上的各种“链”? - 诺米粒 - 2024最新贷款口子论坛
登录 or

如何区分区块链上的各种“链”?

从技术出发~~
已邀请:

区块链观察Blockob 白米Ⅲ级

赞同来自:

本文系区块链观察网原创稿件,版权属本站所有。欢迎转载本站内容,转载须注明来源于:
区块链观察网 www.blockob.com
在具体介绍公有链、私有链和联盟链之前,我们先从最简单的字面意思上,对这几个概念有个大致了解:
*公有链(Public Blockchain):公有的区块链,读写权限对所有人开放。
*私有链(Private Blockchain):私有的区块链,读写权限对某个节点控制。
*联盟链(Consortium Blockchain):联盟区块链,读写权限对加入联盟的节点开放。
它们的区别在读写权限以及去中心化的程度。一般情况下, 去中心化的程度越高,可信度越高,而交易速度越慢。

▶ 公有链代表:比特币块链、以太坊智能合约
公有链的验证节点遍布于世界各地,所有人共同参与记账、维护区块链上的所有交易数据。
公有链能够稳定运行,得益于特定的共识机制,例如比特币块链依赖工作量证明(PoW)、以太坊目前依赖权益证明(PoS)等,其中Token(代币,也有人称“通证”)能够激励所有参与节点“愿意主动合作”,共同维护链上数据的安全性。因此,公有链的运行离不开代币。
优点[1]:
1)所有交易数据公开、透明。
虽然公有链上所有节点是匿名(更确切一点,“非实名”)加入网络,但任何节点都可以查看其他节点的账户余额以及交易活动。
2)无法篡改。
公有链是高度去中心化的分布式账本,篡改交易数据几乎不可能实现,除非篡改者控制了全网51%的算力,以及超过5亿RMB的运作资金。区块链观察网在《区块链是什么》 https://www.blockob.com/P-l-w-519 一文中提到过这点。
缺点:
1)低吞吐量(TPS)。
高度去中心化和低吞吐量是公有链不得不面对的两难境地,例如最成熟的公有链——比特币块链——每秒只能处理7笔交易信息(按照每笔交易大小为250字节),高峰期能处理的交易笔数就更低了。
2)交易速度缓慢。
低吞吐量的必然带来缓慢的交易速度。比特币网络极度拥堵,有时一笔交易需要几天才能处理完毕,还需要缴纳几百块转账费。

▶ 私有链代表:蚂蚁金服
根据《2017全球区块链企业专利排行榜》,阿里巴巴以49件的专利总量排名第一,而这些专利均出自蚂蚁金服技术实验室。
私有链的读写权限掌握在某个组织或机构手里,由该组织根据自身需求决定区块链链的公开程度;适用于数据管理、审计等金融场景。
优点:
1)更快的交易速度、更低的交易成本
链上只有少量的节点也都具有很高的信任度,并不需要每个节点来验证一个交易。因此,相比需要通过大多数节点验证的公有链,私有链的交易速度更快,交易成本也更低。
2)不容易被恶意攻击
相比中心化数据库,私有链能够防止内部某个节点篡改数据。故意隐瞒或篡改数据的情况很容易被发现,发生错误时也能追踪错误来源。
3)更好地保护组织自身的隐私,交易数据不会对全网公开。
缺点:
区块链是构建社会信任的最佳解决方案,“去中心化”是区块链的核心价值。而由某个组织或机构控制的私有链与“去中心化”理念有所出入。如果过于中心化,那就跟其他中心化数据库没有太大区别。

▶ 联盟链代表:超级账本(Hyperledger)
超级账本基于透明和去中心化的分布式账本技术,联盟内成员(包括英特尔、埃森哲等)共同合作,通过创建分布式账本的公开标准,实现价值交换,十分适合应用于金融行业,以及能源、保险、物联网等其他行业。




⬆️上图中,IBM目前已退出超级账本联盟
联盟链由联盟内成员节点共同维护,节点通过授权后才能加入联盟网络。
联盟链是私有链的一种,只是私有程度不同,而且其权限设计要求比私有链更复杂;但联盟链比纯粹的私有链更具可信度。

总结:在对可信度、安全性有很高要求,而对交易速度不苛求的落地场景,公有链更有发展潜力。
对于更加注重隐私保护、交易速度和内部监管等的落地应用,开发私有链或联盟链则更加合适。

编者注:
[1]区块链在高效率、去中心化和安全三个方面,只选其二,这就是区块链的“不可能三角”悖论。因此,无论是公有链、私有链,还是联盟链,都会存在这样或那样的不足,或者说——它们没有绝对的优劣,应该根据具体的落地应用去看待不同的区块链类型。

天赐520520 白米Ⅲ级

赞同来自:

公有链,私有链 ,联盟链
公有链,顾名思义人人都可以参加开发的,在共识算法上添加的激励机制,在公有链上可以进行存证和支付等业务。
私有链,多有大集团内部使用,用于汇报及对账等业务。管理成本较高
联盟链,区块链技术,降低成本,提高效率。多公司及机构联合组成。

要回复问题请先登录注册

var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();