Hyperledger-Fabric试验快速搭建

本文包括了Hyperledger Fabric文档阅读和Hyperledger Fabric平台搭建笔记

Hyperledger Fabric文档阅读

介绍(自己总结的)

区块链: 分布式网络,节点维护,不可篡改的账本共识协议来验证交易,节点执行交易来维护账本的副本,账本以区块的方式存在,区块通过哈希和之前的区块相连。

区块链的应用:加密货币:比特币、以太坊:智能合约:为分布式应用创建平台。:公共非许可区块链技术,公共网络,匿名互动。

公共非许可区块链技术的缺点:性能较差,身份匿名。

企业级应用的需求:身份识别,性能强,低延迟,隐私性和机密性。

Hyperledger Fabric的自身定位:开源企业级许可分布式账本技术平台。高度*模块化**可配置*的架构,支持**通用编程语言编写智能合约,平台是*许可的**,参与者确实*存在信任,**可插拔的共识协议,可以利用*不需要原生加密货币的共识协议**,性能较好*,**隐私和保密

特性的一些解释:
非许可区块链:匿名,信任通过工作量证明进行,采用挖矿来抵消工作量证明的成本。
许可区块链:**使用共识协议来进行信任,不需要昂贵的挖掘。
**智能合约:
“链码”,受信任的分布式应用程序。从区块链中获得信任,在节点中达成共识。共识协议:验证,排序交易,传播到所有节点,各节点按顺序执行交易。一种新方法消除了非确定性,标准编程语言。
隐私和保密性:公共非许可区块链网络中,基于Pow的拜占庭容错共识牺牲了合约和数据的保密性。加密数据:可能被破解,零知识证明:使用其他共识,将机密信息限制于授权节点中。
可插拔共识:模块化的共识
性能和可扩展性:

介绍

什么是区块链?:一个分布式账本,记录网络上所有的交易。去中心化协作维护。信息仅能以附加的方式记录到区块链上,并使用加密技术保证一旦将交易添加到账本就无法修改。简化了信息的溯源。区块链有时被描述为 证明系统

智能合约:为了支持以同样的方式更新信息,并实现一整套账本功能(交易,查询等),区块链使用 智能合约 来提供对账本的受控访问。智能合约不仅是在网络中封装和简化信息的关键机制,它还可以被编写成自动执行参与者的特定交易的合约。

共识:保持账本在整个网络中同步的过程称为 共识 。该过程确保账本仅在交易被相应参与者批准时更新,并且当账本更新时,它们以相同的顺序更新相同的交易。

区块链的不同:一套在网络上建立身份,执行交易和存储数据的标准方法。资产来源可以通过查看交易列表来确定,此列表一旦写入,无法更改,因此可信任。

Hyperledger Fabric 与其他区块链系统不同的地方是 私有许可 。与允许未知身份参与网络的开放式非许可系统(需要诸如“工作量证明”之类的协议来验证交易并保护网络)不同,Hyperledger Fabric 网络的成员需要从可信赖的 成员服务提供者(MSP) 注册。

Hyperledger Fabric 还提供创建 通道 的功能,允许一组参与者创建各自的交易账本。对于某些网络而言,这是一个特别重要的选择。这些网络中,一些参与者可能是竞争对手,并且不希望他们做出的每笔交易都被每个参与者知晓,例如,他们只向某些参与者提供的特殊价格,而其他人不是。如果两个参与者组成一个通道,那么只有这两个参与者拥有该通道的账本副本,而其他参与者没有。

智能合约:Hyperledger Fabric 智能合约用 链码 编写,当该应用程序需要与账本交互时,由区块链外部的应用程序调用。在大多数情况下,链码只与账本的数据库、世界状态(例如,查询)交互,而不与交易日志交互。

Hyperledger Fabric 支持私有网络(使用通道)是很重要的,因为网络是相对开放的。

共识:交易必须按照发生的顺序写入账本,即使它们可能位于网络中不同的参与者集合之中。为此,必须建立交易的顺序,且必须采用一种方法来拒绝错误(或恶意)插入到账本中的非法交易。

这是一个彻底的计算机科学研究领域,且有很多方法可以实现它,每个方法都有不同的权衡。例如,PBFT(实用拜占庭容错算法)可以为文件副本提供一种机制,使其能够保持各个副本的一致性,即使在发生损坏的情况下也是如此。或者,在比特币中,通过称为挖矿的过程进行排序,其中竞争计算机竞相解决加密难题,该难题定义所有过程随后构建的顺序。

Hyperledger Fabric 被设计为允许网络启动者选择最能代表参与者间存在的关系的共识机制。与隐私一样,有一系列需求;从他们的关系高度结构化的网络,到更加点对点的网络。

参考资料:

项目文档[1]

Hyperledger Fabric平台搭建笔记

centos7.9系统的安装和基础配置

  1. 记得选择语言,汉语,这是在安装界面可以看到的。ps:选错语言的话酒删了重装吧。
  2. 记得选择磁盘位置
  3. 记得连接网络,很重要!!!ps:如果在有图形的安装界面不进行勾选的话 ,之后再更改配置会十分的困难。
  4. 记得勾选基本的安装包。ps:如果不勾选的话一些基本的yum或者tar指令都无法使用。但是也不要选择太多的包,不然有可能会和自己安装的服务产生冲突。
  5. 然后进行安装即可。ps:这样进行的安装是没有图形界面的。

如何更换字体和字号:

  1. 进入/lib/kbd/consolefonts,选择合适的字体。
  2. 输入setfont指令,后面跟上字体的名称。
  3. 输入echo 'setfont latarcyrheb-sun32' >> /etc/profile指令将字体设置设为开机启动。

wget的安装:

  1. 刚开始安装好的centos系统是没有wget的,需要用yum安装。
  2. yum -y install wget

Go语言安装

  1. Go语言安装

    从官网下载最新的linux-amd64.tar.gz压缩包(这里是go1.15.6.linux-amd64.tar.gz)

    1
    wget https://golang.google.cn/dl/go1.15.6.linux-amd64.tar.gz

    将其解压到/usr/local目录下:

    1
    sudo tar -C /usr/local -zxf [压缩包名]
  2. 配置环境变量,在/etc/profile文件的末尾加入(在加入之前创建/home/gopath目录)

    1
    2
    export GOPATH=/home/gopath
    export PATH=$PATH:/usr/local/go/bin
  3. 配置中国的代理

    1
    2
    go env -w GO111MODULE=on
    go env -w GOPROXY=https://goproxy.cn,direct
  4. 查看是否配置成功

    1
    go env

mwget安装

wget太慢使用mwget

1
2
3
4
5
6
7
8
9
10
wget http://jaist.dl.sourceforge.net/project/kmphpfm/mwget/0.1/mwget_0.1.0.orig.tar.bz2
yum install bzip2 gcc-c++ openssl-devel intltool -y
bzip2 -d mwget_0.1.0.orig.tar.bz2
tar -xvf mwget_0.1.0.orig.tar
cd mwget_0.1.0.orig
./configure
make
make install  echo "至此,安装完成"
% 断点续传
wget -c 要下载的文件,实现断点续传。

最后的配置工作

生成身份材料

  1. 进入BasicNetwork-2.0/artifacts/channel目录,执行

    1
    ./create-artifacts.sh
  2. 进入BasicNetwork-2.0/artifacts目录执行

    1
    ./docker-compose up -d
  3. 进入BasicNetwork-2.0

    1
    ./createChannel.sh

智能合约部署

  1. 进入BasicNetwork-2.0/artifacts/src/github.com/fabcar/go/目录下,执行(为智能合约安装依赖)
1
GO111MODULE=on go mod vendor
  1. 进入BasicNetwork-2.0/,执行智能合约的部署和测试在执行deployChaincode.sh之前,按以下命令修改文件夹的权限
1
sudo chmod 777 /home/gopath/*
  1. 开始部署
1
./deployChaincode.sh

部署explorer

  1. 启动Explorer, 进入ContainerisingBlockchainExplorer目录下

    1
    docker-compose up -d

服务全部启动成功,可以在windows上查看相关的服务。

注意:hyperledge Fabric搭建完成后将虚拟机挂起后再重新开启并不能恢复所有的服务,需要重新开启一遍。

平台使用

查看可视化的区块链信息,访问:

1
[ip地址]:8080

查看产的最新状态,访问:

1
[ip地址]:5984/_utils

常用操作

超级账本的下载地址:

1
wget -c https://github.com/hyperledger/fabric/releases/download/v2.2.1/hyperledger-fabric-linux-amd64-2.2.1.tar.gz

超级账本的解压缩:

1
sudo tar -C ./ -zxf hyperledger-fabric-linux-amd64-2.2.1.tar.gz

超级账本的bin目录内的东西放到/usr/local/bin下

1
sudo mv ./bin/* /usr/local/bin

把BasicNetwork-2.0/artifacts/channel下的crypto-config拷贝到ContainerisingBlockExplorer下

1
sudo mv BasicNetwork-2.0/artifacts/channel/crypto-config ContainerisingBlockchainExplorer

在ContainerisingBlockchainExplorer下创建data和walletstore文件夹

1
2
sudo mkdir data
sudo mkdir walletstore

查看Centos的ip(看en33那个ip)

1
ip add

启动docker服务

1
systemctl restart docker.service

关闭所有运行着的docker容器

1
docker rm -f $(docker ps -a -q)

tips:

1
注意go的版本

参考资料:

实验平台在服务器上的基于脚本的自动化部署[1]

区块链实验平台部署[2]

Hyperledger-Fabric试验快速搭建

https://dicemy.com/29920

作者

Dicemy

发布于

2021-07-16

更新于

2022-02-12

许可协议

评论