Alan Hou的个人博客

区块链之Hyperledger Fabric学习笔记

伴着随前段时间 NFT 的大火,Alan结合公司发展阶段计划对区块链进行一定程序的研究,虽然区块链早已不是什么新技术,但对我而言目前仍是研究的初级阶段,因此理解并不深刻,同时这里所说的区块链并不涉及加密货币的应用,所以比特币、狗狗币以及其它以太坊技术延展出来的各类加密货币均不在研究范畴内。

据了解当前国内区块链技术的应用主要有两大阵营:一类是基于以太坊技术,比较有规模的是微众银行所开源的fisco-bcos,其完整性已经非常高,通过 WeBASE几乎可一键部署测试环境,其中以太坊的交易机制如gas以及solidity语言编写智能合约的方式都有保留,并且还结合国情加入了对国密的支持。以太坊的创始人江湖人称V神也是个传奇人物了,Alan 计划会单独写一篇文章进行研究。另一类自然是本文的主角 Hyperledger,包含很多项目(当前共16个),Fabric是其中最为知名的。蚂蚁区块链的底层就是 Hyperledger,而微众银行自然属于腾讯系,很有意思,阿里、腾讯在区块链的应用上选择了不同的路径。

NoHyperledger ProjectsProject TypeStatus*
Distributed LedgerLibrariesToolsDomain Specific
1Hyperledger IndyXActive
2Hyperledger FabricXActive
3Hyperledger AriesXActive
4Hyperledger IrohaXActive
5Hyperledger SawtoothXActive
6Hyperledger BesuXActive
7Hyperledger QuiltXIncubation
8Hyperledger UrsaXIncubation
9Hyperledger TransactXIncubation
10Hyperledger CactusXIncubation
11Hyperledger CaliperXIncubation
12Hyperledger CelloXIncubation
13Hyperledger ExplorerXIncubation
14Hyperledger GridXIncubation
15Hyperledger BurrowXIncubation
16Hyperledger AvalonXIncubation

在技术上不论是Fabric还是fisco-bcos 都支持主流语言,Fabric采用Go语言进行开发,不过不涉及底层区别应该不大,而 fisco-bcos 基于 JAVA 语言,对JAVA的支持应该是更为完备的。

区块链的4代划分

采译自Hands-On Smart Contract Development with Hyperledger Fabric V2一书

区块链1.0

初代区块链伴随着比特币类的加密货币出现在大众的视野。区块链技术扮演的角色是通过允许人们依靠加密技术来代替银行发送交易,从而改善已有货币体系。在这代区块链里,网络是端到端、去中心化、匿名并且透明的。但主要的缺点是它使用的工作量证明(PoW)需要进行大量的挖矿。

区块链2.0

区块链技术在2015年出现了一次拐点,这时技术创新者开始探索其货币交易之外的去信任化(trustless)特性。此时以太坊(Ethereum)平台的创建带来了两大创新:

  1. 加密货币之外其它数字资产的应用,成为其它去中心化项目的基石
  2. 智能合约的出现,自动化链上所有成员的交易处理时,通过自动化控制所有成员所有条件的执行,增加了安全性。

区块链3.0

第三代区块链在其前辈的基础上,聚焦于改善它们的缺陷和不足,而又扩展了它们的使用场景。例如,工作量证明共识机制换成了权益证明(Proof-of-Stake)。增了其它特性和功能来提升区块链的性能并让其在不同的产业中可实施。例如,发明了联盟链或跨链交易处理这样的区块链架构。类似地,也引入了其它的变化,有法规的遵守和治理,隐私和智能合约。

区块链4.0

当前对第四化区块链技术的具体特性或方向上专家们尚未达成一致。有些人认为会加入一些新兴的技术,如 IoT或AI,另一部分人认为只需紧随前几代的步伐,提升其功能并让其更高效、可扩展及对更贴近大众即可。

Hyperledger9大区块链组件

安装

环境准备

安装Fabric(v2)

使用Fabric测试网络

部署生产网络

部分文件地址:https://github.com/alanhou/blockchain

2.3较2.2中有一个较大的变化,即 Profiles 部分,可对比 configtx.yaml 与官方文档 Profiles 部分。我们先替换为原2.2中的内容进行部署,即

准备工作

通过配置文件启动节点:

关于cli 也可仅配置一个,通过修改环境变量来操作不同的 peer 节点:

通道&链码

 

此时输出如下内容表示配置正常,如有 false 则表示安装有问题:

任意一个节点执行

开始调用测试

区块链浏览器

https://github.com/hyperledger/blockchain-explorer

Fabric 核心模块

configtx.yaml中Organizations内的 ID 应与orderer.yaml内的LocalMSPID保持一致。

常见问题

1、Failed connect to raw.githubusercontent.com:443; Connection refused

https://githubusercontent.com.ipaddress.com/raw.githubusercontent.com获取到 IP 地址(如http://185.199.108.133/),然后在 host 文件中加入:

2、Error response from daemon: manifest for hyperledger/fabric-tools:latest not found: manifest unknown: manifest unknown

3、Chaincode packaging has failed Deploying chaincode failed

4、Cannot run peer because cannot init crypto, specified path “fabric-samples/config/msp” does not exist or cannot be accessed

5、Error on inspectChannelCreateTx: org ‘Org1MSP’ does not have any anchor peers defined

 

Credit:

  1. Hands-On Smart Contract Development with Hyperledger Fabric V2
  2. https://space.bilibili.com/373566326
退出移动版