前面我们提到,在区块链3.0中,已经发展出了智能合约+私有链的形式,而目前这种形式应用最广泛的就是今天要说的:Hyperledger fabric。
一、Hyperledger fabric 介绍
Hyperledger Fabric,是一个基于模块化架构的分布式账本解决方案平台,它是由 IBM 带头发起的一个联盟链项目,于 15 年底移交给 Linux 基金会,成为开源项目。Hyperledger 基金会的成员有很多大牌,诸如 IBM,Intel,思科等。基金会里孵化了很多区块链项目,Fabric 是其中最出名的一个,一般我们说超级账本(Hyperledger)基本上指的都是 Fabric。
Hyperledger fabric 不是货币技术,是区块链技术。所以fabric没有挖矿的概念,绿色环保。
二、Hyperledger fabric的优势
1、分布式的账本存储
2、每一个节点都保存了完整的数据,从而实现了数据不可被篡改
3、区块链中的数据不能被删除,只能添加和修改,变化后的数据状态为World State(世界状态)
三、使用Hyperledger fabric解决现实问题
假如A公司与B公司要进行资产交换,数据都存储在自己的服务器
由于A公司和B公司互不信任,所以两公司之间要进行对账,实际上往往账目是对不上的
一般传统解决方案:
通过引入第三方中央机构解决,实际上这种方式也是存在问题的:
1、成本高
2、三方机构的安全问题
通过Hyperledger fabric解决:
1、将各个机构形成环状,每个结构都有自己的账本,数据都一致。
2、fabric保证数据的同步。
3、如果有A机构做了数据篡改,其他机构就会发现A机构的数据发生了错误。
4、实际上,fabric解决就是信任问题。
案例分析
项目:江苏省农牧厅区块链渔政管理系统
渔业供应链参与人
channel
如果,王大壮与餐馆A和餐馆B的交易放在同一个channel的话,那么价格的隐私数据得不到保障。
在Hyperledger fabric中,channel可以理解为是独立的实例。参与者称之为peer。
实际上可以理解为两个微信群,
chaincode(智能合约)
Chaincode就是智能合约。是读取、修改数据的唯一途径。
Chaincode属于某个channel,channel中的peer都需要安装该Chaincode,否则会导致数据不一致。
Chaincode的生命周期为:
1)安装 install
2)实例化 init
3)调用 invoke
工作流程
SDK是为客户端提供操作的API,和实现语言无关。
peer
1)peer0、peer1、peer2在同一个channel中
2)多个peer必须有相同的MSP(Membership Service Provider)才能进行通信。
提案
1)客户端通过SDK发起提案,如:我需要修改某一条数据了。
2)各个peer接收到提案后,进行模拟执行,会产生读写集,内部采用version的机制来记录修改前后的状态。
背书
1)各个peer将模拟执行后的结果以及签名,发送给SDK
更新申请
1)SDK收集到一定数量的背书后,将发送正式的更新申请给orderer
orderer
1)对请求的内容以及签名做校验
2)如果校验完成,没有问题的话,就会发送真正的调用更新给各个peer,各个peer才真正的执行更新。
3)如果不合法的请求,也会保存到block chain,方便后续的审查。
4)排序解决双花问题,解决方式为把并行的问题转化成串行执行。
项目中的实际应用
痛点的本质就是信任问题:
1)餐馆不信任王大壮
2)监管部门不信任餐馆
3)监管部门不信任王大壮
4)王大壮的隐私问题