Skip to content

Latest commit

 

History

History
134 lines (83 loc) · 4.41 KB

File metadata and controls

134 lines (83 loc) · 4.41 KB

fabric以及和以太坊区别

[toc]

以太坊

  • “链” 是信任的描点,所有的信任都来自于链。
  • 有自己的沙盒执行环境(EVM)。
  • solidity编写智能合约以及部署。
  • 不会拆散了来用。

fabric

  • 每个智能合约都能创建新的链,也可以和其他智能合约共用一个链。
  • 使用了docker机制实现智能合约。
  • 可以使用多个语言开发智能合约。(我们使用Go语言开发chaincode,node.js,vue.js)
  • 身份管理
  • 灵活性更高
  • 更像一个区块链云服务平台,让用户方便的在基础平台上,使用各个模块创建一个一个的链(链码)进而实现一个一个的应用。

fabric是一个高度模块化和可配置架构(a,b,c),不同组块之间可插拔实现。

hyperledger 与数字货币

  • 都是基于区块链技术实现的
  • 比特币 1 秒 7 笔交易,以太坊 1 分钟几百笔,hyperledger 理论上一分钟 50 万笔交易
  • hyperledger 因为不用挖矿,不需要很强的硬件支持,也不耗费资源
  • hyperledger 没有 51% 攻击问题,加入链中的成员要经过 CA 认证,是有许可的网络

fabric 是什么

  • 目标:做企业级

    联盟链的基础设施

    • 公有链:全网公开,没有类似 CA 的用户验证
    • 联盟链:只针对某个特定群体的成员和有限的第三方,内部指定多个预选节点为记账人,每个块的生成由所有的预选节点共同决定
    • 私有链:所有网络中的结点都掌握在一家机构手中
    • 联盟链和私有链可统称为许可链
  • 可插拔的共识机制(solo 和 kafka 等)

  • 多链多通道隔离,可以做业务隔离,保护业务数据隐私

fabric 的重要组件

  • fabric CA
    • 自动生成认证证书
    • 创建账户
    • 是一个工具集
  • fabric Peer
    • 可以有很多 Peer,是 Ledger 和 blockchain 存储的位置
    • 一个 peer 可以加入不同的 channel
  • fabric ordering service
    • 提供排序服务,用来做共识
    • 创建 block 区块
    • 使用 solo 排序,配置成使用 kafka 排序(优先状态机)

fabric 的开发语言

  • 智能合约
    • go
    • java
  • SDK
    • java
    • node.js(官方推荐,效率)
    • go(大坑,支持是最差的)
    • python

fabric 的 channel

  • 每个 channel 可以理解成独立的 fabric 实例
  • 不同的 channel 是私有的子网,类似于微信群,隔离业务数据
  • peer 是微信里的人,peer 可以加入不同的 channel
  • 还可以设置允许什么人加入

fabric 的 chaincode

  • chaincode(链码) 就是智能合约,是一个应用程序
  • 用于更新账本数据,由 peer 去执行 chaincode
  • 在 fabric 里,chaincode 是数据唯一的更新方式
  • chaincode 属于某一个 channel
  • chaincode 的生命周期
    • 安装链码
    • 实例化(调用 init 方法)
    • 调用使用(调用 invoke 方法)
  • 每个 chaincode 有不同的背书策略(如何去达成共识)
    • 可能有的 chaincode 是所有人都同意才可以
    • 可能有的 chaincode 是至少有一个人同意才可以
    • 可能有的 chaincode 是有 4 个人同意才可以
    • 适应企业复杂应用场景

fabric 的 msp

  • 是一组重要的密码学签名工具
  • 定义了你是谁,你在哪(在哪个 channel 中)
  • CA 去颁发证书

术语回顾

img

  • channel 数据通道,独立的 fabric 实例,不同 channel 数据是隔离的
  • world state 是世界状态,是 ledger 里面存放的数据,是 KV(key-value)数据的存储,可以用 leveldb 和 couchdb 存储
  • ledger:账本,记录当前所有的世界状态,从底层架构上保证了数据一致性,不可篡改性
  • chaincode:链码,编写智能合约,ledger 的变化只能通过调用链码实现
  • peer:是整个网络的基础,每一个 peer 的可以持有一个或多个 ledger,每一个 peer 也可以有一个或多个 chaincode
  • network:是有 peer 组成的网络,形成区块链网络,在同一个网络中 peer 实现同步记账,保证了 peer 的数据一致性
  • ordering service:排序服务,进行排序和验证,验证通过的数据,写入 peer 节点的 ledger,具体还要看背书策略
  • msp:peer 节点的认证和标识