zoukankan      html  css  js  c++  java
  • 一、超级账本初体验

    根据《深度探索区块链——Hyperledger技术与应用》的内容及实际操作进行摘要和记录。使用Ubuntu 16.04,下载Hyperledger Fabric 1.0进行学习。

    1. 基本环境安装:Hyperledger Fabric 1.0依赖Docker执行智能合约,需要先安装Docker和Docker Compose的运行环境。

    (1) Docker的安装和使用

         a) Ubuntu安装Docker

         方式一:终端输入  sudo apt-get install docker.io

         方式二:官方详解  https://docs.docker.com/install/linux/docker-ce/ubuntu/

         完成后可以使用docker -v查看版本信息。

         b) 用户加入到docker组

         sudo groupadd docker                       ##添加用户组

         sudo usermod -aG docker $USER     ##非root用户可以执行docker命令

         c) 重启Docker服务

        sudo service docker start

    (2) Docker Compose的安装和使用

        使用通过pip进行安装

        sudo apt install python-pip

        sudo pip install docker-compose

        完成后可以使用docker-compose -v查看版本信息

        遇到问题:

        a) 要求升级pip   sudo pip install --upgrade pip

        b) 升级后执行pip命令报错:ImportError: cannot import name 'main'

            解决方法:打开pip配置文件   sudo gedit /usr/bin/pip

                             将文件中 from pip import main  改为 from pip._internal import main 保存

    (3) 下载超级账本源代码

          超级账本源代码位于https://github.com/hyperledger/fabric中,可直接使用网页下载release-1.0或者使用git

          git clone https://github.com/hyperledger/fabric.git

          cd fabric

          git checkout -b v1.0.0

          实际使用方法为直接下载https://github.com/hyperledger/fabric/tree/release-1.0,并在文件夹中解压zip

          sudo unzip fabric-release-1.0.zip

          sudo mv  fabric-release-1.0  fabric   ##重命名

    2. 超级账本部署调用

    (1) 下载超级账本Docker镜像文件

    #进入 fabric/scripts目录,修改文件属性
    chmod +x bootstrap.sh
    #直接下载Docker镜像文件
    ./bootstrap.sh

    下载内容较多,需要等待时间较长。如下载过程中报错或未下载完成,可以再执行下载代码(./bootstrap.sh)。

    完成后使用docker images,至少包括以下内容

    (2)部署超级账本网络

    运行Hyperledger需要较多初始化配置,该出先绕开初始化过程,本处先用fabric-samples为例,了解网络部署。

    a) 下载fabric-samples,可以直接使用网页下载fabric-samples-release-1.0或者使用git

         ##在文件夹中解压zip

         sudo unzip fabric-samples-release-1.0.zip

         sudo mv fabric-samples-release-1.0  fabric-samples   ##重命名

    b) 利用docker-compose启动容器

         cd fabric-samples/basic-network

         docker-compose -f docker-compose.yml up -d

         成功启动后,可使用docker ps查看已启动的容器

    c) 切换到管理员,用户再创建通道和加入通道

    ##切换到root
    sudo -i  
    ##切换环境到管理员用户的MSP,进入Peer节点容器peer0.org1.example.com
    docker exec -it -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/Admin@org1.example.com/msp" peer0.org1.example.com bash
    #创建通道
    peer channel create -o orderer.example.com:7050 -c mychannel -f /etc/hyperledger/configtx/channel.tx
    #加入通道
    peer channel join -b mychannel.block
    #退出Peer节点容器peer0.org1.example.com
    exit
    
    ##进入cli容器安装链码和实例化
    docker exec -it cli /bin/bash
    # 给Peer节点peer0.org1.example.com 安装链码
    peer chaincode install -n mycc -v v0 -p github.com/chaincode_example02
    # 实例化链码,a分为100,b分为200
    peer chaincode instantiate -o orderer.example.com:7050 -C mychannel -n mycc -v v0 -c '{"Args":["init","a","100","b","200"]}'
    

    (3) 链码调用和查询

    a) 查询初始值,例如查询a

    peer chaincode query -C mychannel -n mycc -v v0 -c '{"Args": ["query", "a"]}'

    b) 调用链码,从“a”转移10到“b”

    peer chaincode invoke -C mychannel -n mycc -c c0 -c '{"Args": ["invoke", "a", "b", "10"]}'

    再查询a和b结果显示,"a"的值为Query Result:90,"b"的值为Query Result:210。

         

           

  • 相关阅读:
    select * from a,b探讨
    使用python脚本从数据库导出数据到excel
    git入门
    登录远程服务器脚本
    Ubuntu下python开发环境搭建
    asyncio并发编程
    深入理解python协程
    单例模式的几种实现方式
    MySQL统计百分比结果
    Java查询MySQL数据库指定数据库中所有表名、字段名、字段类型、字段长度、字段描述
  • 原文地址:https://www.cnblogs.com/zhangjbravo/p/11226997.html
Copyright © 2011-2022 走看看