节点组成的不同
ethereum 只有 peer 节点组成,hyperledger fabric 有 order 节点和 peer 节点。
注:其实 ethereum 还有一些不参与记账的节点,但不是必须,这里不写。
打包交易的节点不同,即保持一致性的方式不同。
ethereum 是挖矿记账,即计算出困难问题的 peer 拥有记账权。具体的步骤:peer1 打包交易成区块,然后计算困难问题,如果计算出困难问题,那么就可以把这个区块 block1 发布出去了;其他 peer 收到区块后,立即停止自己的计算(因为每个 peer都想发布区块,只是peer1 先计算出来),开始同步这个区块的交易。这样来完成全网账本的一致性。
注:这里存在多个 peer 同时计算出困难问题,然后都发布区块的问题。
hyperledger fabric 是把打包交易成区块的任务放到 order 节点来完成了,即 order 节点规定了区块中交易的顺序。然后把这个打包好的交易散步到全网中,其他节点同步这些交易,保持全网账本的一致性。
所以不同是:打包交易的节点不同,ethereum 是每个 peer 都打包交易成区块,但是只有计算出困难问题的节点才有资格发布这个区块。hyperledger fabric 是 order 节点打包交易成区块,peer 节点只管同步就行了。
注:因为 ehereum每个 peer 都在打包交易成区块,然后用 pow 争取记账权,即希望全网同步自己的打包交易的区块,如果一个节点挂掉了,不用担心。hyperledger fabric 只有 order 节点去打包交易,如果这个 order 节点管理,岂不是所以交易都被全网记录了?所以 hyperledger fabric 采用了 crash fault tolerant (CFT) 来保证安全性,如 raft。这样有多个 oder 节点存在了,不用怕一个挂掉了。
注:ethereum 发布区块的 peer 会得到奖励,即以太币,但是 hyperledger fabric 发布区块的 order 节点却没有奖励,会有什么影响吗?答:各自服务的对象不同,ethereum 服务的对象是平等的任何 peer,为了保证整个 ethereum 项目的稳定性,我们必须要奖励那些能诚实记账来将整个项目维持下去的节点。而 hyperledger fabric 服务有特定的组织,所以,未完待续。。。。。
注:这里都没有写验证的问题,下面再来讲。
验证方式的不同
hyperledger fabric 中有背书的概念,未完待续。。。。
Reference
[1] https://hyperledger-fabric.readthedocs.io/en/release-2.2/index.html
[2] https://www.bilibili.com/video/BV1Vt411X7JF?spm_id_from=333.999.0.0