以太坊与超级账本的对比

一、定位:

Ethereum:以太坊是一个开源的有智能合约功能的公有链平台,相比比特币它最大特性就是引入了智能合约和可编程底层,这使得人们可以基于其架构开发各种用途的区块链应用。
HyperLedger Fabric:超级账本是由Linux基金会主导发起的开源项目,提供了一个开源的商业联盟链框架,旨在为区块链应用程序的开发提供基础,帮助企业更容易地建立企业级区块链解决方案。

二、相同点:

以太坊和超级账本均保存两类数据:永久数据和暂时数据。

  • 永久数据就是交易。一旦交易确认,就会在区块链中记录,然后就再也不可以更改。
  • 暂时数据就是世界状态。世界状态就是所有账户的当前状态,某账户发起一笔交易,该账户余额就会发生改变,世界状态保存在键值数据库中。

在这里插入图片描述

三、交易上链过程:

以太坊中的节点没有角色的区别。
以太坊采用的是状态机积极复制(Active replication)策略,在给定相同的初始状态和请求序列的情况下,所有进程将产生相同的响应序列并最终处于相同的最终状态。

以太坊交易上链过程:

  1. 客户端广播交易
  2. 节点收集交易,验证交易,将交易按序打包成块
  3. 根据共识机制尝试获得挖矿资格
  4. 获得挖矿资格之后广播该区块
  5. 节点收到区块之后,验证挖矿资格,运行该区块上的所有交易,最后更新账本。

总的来说:先由某个节点验证交易后对交易进行排序,获得挖矿资格之后广播给其他节点,其他节点再执行交易以更新账本。

而超级账本将交易的排序从交易的验证和执行中分离出来,分别由不同角色的节点负责,一共有三类角色:(超级账本中一个物理节点可以有多个角色。)

  • Clients 客户节点:

    • 提交交易建议给peer对等点,等待背书结果
    • 将背书后的交易广播出去以供排序(背书:验证某个交易是否合法,是否愿意为之签名)。
  • Peer 对等点:

    • 执行交易建议
    • 验证交易(部分对等点,由背书策略指定的对等点来验证交易,验证 通过后,对交易进行背书操作)(一个典型的背书策略是用一个简单的逻辑表达式来指定一个交易需要的背书节点集)
    • 保存账本(所有对等点)
  • Orderering Service Node 排序服务节点

    • 为所有交易建立顺序关系

超级账本交易上链过程:

  1. 客户端发送交易到由背书策略指定的节点,这些节点运行交易,记录运行结果。
  2. 排序节点使用可拔插的共识协议对背书过的交易的顺序进行共识,组成区块,广播给所有peer节点。
  3. 每个节点都验证状态的改变以及背书策略执行的一致性,验证通过,则根据记录的运行结果更新账本。
四、联盟链的建立:

hyperLedger 通过channel建立联盟链,利用MSP来控制节点的权限。

  • channel是重要的通信机制,是联盟成员之间拥有独立的通信渠道,在通道中发送的交易只有属于通道的成员才可见,网络中可以有多个通道,每个通道维护一个属于本通道的账本。

(P1、P2、P3 节点;L1、L2 账本(区块链);C1、C2 通道)
P1、P2、P3 节点;L1、L2  账本(区块链);C1、C2  通道

  • MSP(Membership Service Provider)是一个为超级账本提供成员管理服务的组件,主管区块链网络中节点的准入与授权。

以太坊想要建立联盟链,只能通过编写智能合约实现节点身份的注册与恢复、节点的权限控制。

五、其他的一些不同:
  • 以太坊的智能合约是以账户形式存在的,部署智能合约成功会创建一个智能合约账户,此后要调用该智能合约也就是向该智能合约的账户发起一笔交易,而超级账本的智能合约直接部署在每个peer上。
  • 以太坊的智能合约由solidty语言开发,运行在以太坊虚拟机EVM中,一旦发布无法更新;超级账本的智能合约支持Go、Java、等多种通用编程语言,运行在Docker内,发布之后可以更新。
  • 以太坊有内置代币,部署智能合约需一定的以太币;超级账本无内置代币。
发布了1 篇原创文章 · 获赞 1 · 访问量 53

猜你喜欢

转载自blog.csdn.net/qq_29283623/article/details/104677465