联盟链与公链的一些思考

许可

联盟链与公链不是对立关系,联盟链许可的含义有很多维度,包括:

  • 谁可以跑一个节点
  • 谁可以提交一个交易
  • 谁可以看到你的数据
  • 谁可以出块
  • 你的身份是否公开

模块化架构

fabric采用高度模块化的架构:
包括CA、Endorser、Committer、Orderer等模块,可扩展性强。

fabric采用可插拔共识:
实现orderer的相关接口就可以替代现有共识,目前支持的共识有solo、kafka、etcdraft。

智能合约的语言

  • fabric的智能合约可以采用通用语言来编写,支持Go、Java、Node.js等通用语言以及solidity。
  • 以太坊的智能合约语言一般是用solidity。

隐私性

  • fabric通过channel、privateData等机制来进行数据隔离,保护相关数据不被链上所有节点掌握。fabric还新增了Idemix机制(零知识证明)来实现交易的匿名性。
  • 公链的隐私只能采用零知识证明、同态加密等密码学方式,但是目前这些密码学技术仍需进一步发展。

共识

  • 公链的Po系列共识需要借助挖矿或加密货币;同时也没有finality,比如比特币必须等待6个区块,才能保证交易大概率不会被推翻。
  • 联盟链无需借助挖矿或加密货币就可以达成共识,将出块与验证分开,永远不会出现分叉。

区块交易模式

  • 公链是“order-execute”模式,将交易排序打包然后广播到每个节点,每个节点再按顺序执行(验证)这些交易。因此所有节点都将会执行交易,导致性能上的限制。
  • 联盟链是“Execute-order-validate”模式,Endorser执行交易并校验交易合法性,为之背书;然后通过Orderer来对交易进行排序并打包区块,最后由Committer来做背书策略等校验,校验成功后即可写入账本。仅有背书节点执行交易,性能会有一些提升。
发布了1 篇原创文章 · 获赞 0 · 访问量 83

猜你喜欢

转载自blog.csdn.net/ice_fire_x/article/details/103956139