美文网首页
Fabric01-2

Fabric01-2

作者: 刘岩2019 | 来源:发表于2019-04-22 19:07 被阅读0次

    准备工作

    1. 官方帮助文档:https://hyperledger-fabric.readthedocs.io/en/release-1.2/
    2. 安装 cURL(https://curl.haxx.se/download.html),curl --version 查询版本
    3. 安装docker,docker --version 查询版本
    4. 安装docker-compose,docker-compose --version 查询版本
    5. 安装 go 语言环境,go version 查询版本
    6. 安装node.js, node -v 查询版本
    7. Python 版本要求为 2.7,python --version 查询版本

    curl -sSL https://raw.githubusercontent.com/hyperledger/fabric/master/scripts/bootstrap.sh | bash -s 1.4.1 1.4.1 0.4.15

    1.JPG
    # fabric-peer :存储账本
    # fabric-orderer :排序结点,没有矿工,不用挖矿,相当于矿工
    # fabric-ccenv :go的运行环境,智能合约(链码)支持go语言编程
    # fabric-tools :工具节点,作为客户端使用
    # fabric-ca :注册账号
    # fabric-couchdb : 数据库,key-value
    # fabric-kafka :排序服务器
    # fabric-zookeeper :kafka工作的时候需要zookeeper 协助
    

    设置fabric中的可执行程序全局访问

    /home/itcast
    ls -a
    vi .bashrc
    最后一行写:export PATH=/home/itcast/hyperledger-fabric/fabric-samples/bin:$PATH
    . .bashrc //生效

    测试网络演示

    cd /home/itcast/hyperledger-fabric/fabric-samples/first-network
    ./byfn.sh generate
    ./byfn.sh up
    ./byfn.sh down

    一:Hyperledger Fabric基本概念

    1.Hyperledger简介

    Hyperledger项目,Linux基金会托管,IBM牵头做的,Hyperledger里有很多模块,其中最大的,最重要最核心的模块Fabric,其他模块都是为Fabric服务的.

    2.Hyperledger Fabric是什么

    Hyperledger Fabric是一个框架,私有网络(不发币),里面有一个账本,账本的操作需要使用智能合约,Hyperledger Fabric是参与者管理交易的系统.比如:淘宝买东西,也是交易,但是有中心服务器,Fabric可以替换,并且去掉中心服务器.不会出错,效率更高了.Fabric支持溯源.

    3.特点

    Hyperledger Fabric与其他区块链系统不同的地方是私有和许可。
    (1)私有:Fabric中所有的数据都是受保护的,私有的,私有网络,想看数据,必须加入到小的网络中去,Hyperledger Fabric支持隐私, 提供了创建通道的功能,允许一组参与者中部分成员创建单独的交易账本。

    (2)许可:通过正规的渠道申请,得到账号,账号是数字证书(CA证书),能够保证网络中数据安全性.任意一笔交易都需要签名,非对称加密,私钥签名,别人用公钥验证,Hyperledger Fabric网络的成员通过可信赖的,会员服务提供商(MSP)注册,获取签发证书,有了证书,还要有秘钥对,而不是开放式的无权限系统。

    二:Hyperledger Fabric逻辑架构

    (一).成员服务:身份管理

    (二).共识服务

    • 账本管理
    • 交易管理

    (三).链码服务:智能合约


    1.用户身份:
    • orderer节点 : 排序节点, fabric不用挖矿,order结点相当于矿工的角色,对数据排序, 打包变成区块,order节点将打包的区块发送给peer节点,peer节点收到区块之后, 将数据写入账本中,打包的块大小, 频率可以通过环境配置进行配置.
      为什么要排序? 解决双花问题,排序算法有两种:
      • solo: 测试用的, 确实很慢,队列,串行,很慢
      • kafka : 分布式的排序服务器,效率高,企业级
    • peer节点 : 账本只在peer节点上, 存储数据,在整个分布式区块链网络中, 分布着很多peer节点,每个peer节点中的数据相同,对一个节点进行操作, 数据会被同步到网络的其他节点上
      peer节点从职责上可以划分:

      • 背书节点
      • 提交节点
      • 主节点
      • 锚节点
    • 客户端程序:访问orderer节点, peer节点,有普通用户和管理员用户

    2-1.账本管理:账本在peer节点上, 由两部分组成
    • 区块链:所有的交易记录
    • 世界状态: 就是一键值对,数据库, 存储区块链最新,最后一条记录,默认的数据库: levelDB, 不想使用leveldb, 可以使用couchdb
    2-2.交易管理
    • 部署交易:编写链码, 业务逻辑, 智能合约,将链码安装到peer节点上
    • 调用交易:对链码中的业务逻辑进程调用,链码中有对应的接口
    3.智能合约: 链码,需要部署到有账本的peer结点上,智能合约的编写支持的语言 go, node.js

    三:Peer(结点)、Ledger(账本)和 ChainCode(链码,智能合约)关系

    1.Ledger账本:在peer节点上,默认就有
    2.ChainCode智能合约:程序猿编写完智能合约, 然后安装到peer节点,默认是没有,客户端调用链码(智能合约), 链码修改账本

    在一个peer节点上可以同时有多个账本,账本和账本之间数据不可见, 相互隔离,一个账本可以对应一个合约, 也可以是多个

    1.JPG

    四:通道(channel)

    用来隔离数据的, 用户在不同的通道中, 使用的数据是不同的, 而且数据不共享, 理解为群
    通道是由共识服务(ordering)提供的一种通讯机制,将peer和orderer连接在一起,形成一个个具有保密性的通讯链路(虚拟),实现了业务隔离的要求

    1.JPG
    2.JPG

    五:组织(channel)

    fabric中的组织是通过职能划分的
    在Fabric中一个组织里边都有什么?

    • 有 (1 - N )个用户
    • 存储账本的peer节点

    图:


    1.JPG

    p1- p8: peer节点
    a1-a4: 客户端
    C: 通道
    org1 - org4: 组织

    1.组织1中有2个peer节点,在同一个组织中peer结点的职责相同, 没有部署在同一个地方,同一个组织的节点上安装的智能合约相同,不同组织的节点,安装的智能合约不同,每个组织内用一个专门的客户端, 用来访问当前组织内的节点

    2.组织1中要存储数据,修改账本数据,需要客户端a1,a1作用连接peer1或者peer2

    3.多个组织加入到同一个通道, 那么这些组织中节点上的账本数据相同

    相关文章

      网友评论

          本文标题:Fabric01-2

          本文链接:https://www.haomeiwen.com/subject/ytiugqtx.html