美文网首页ugChain技术团队
对Hyperledger Fabric的简短总结

对Hyperledger Fabric的简短总结

作者: Buffalo_Lv | 来源:发表于2018-05-17 11:47 被阅读4次

(2017年8月)Hyperledger Fabric作为一款联盟链产品,比公有链系统复杂许多,用同样的时间研究公有链技术比如:比特币和以太坊等等,能获得的利益要比研究Fabric丰厚得多,因此在研究了几个月Fabric,改写了部分JAVA-SDK代码,并用它做了一个项目之后,我决定放弃对联盟链的研究,不过在放弃之前,至少得总结一下,有始有终。废话少说,直接出干货:

Fabric各个组件的关系图

SDK(CLIENT) 、PEER、ORDERER交互流程

orderer节点启动时需要用到创始区块文件(通常命名为orderer.block、genesis.block等,在命令行选项参数中指定),构建并连接到系统通道

client发送配置交易文件(通常命名为foo.tx、mychannel.tx等)给orderer节点,申请创建应用通道,orderer节点检查角色、签名是否符合通道创建策略,若符合策略要求,则创建应用通道的创始区块(foo.block、mychannel.block)并将其返回给client

client接收到应用通道的创始区块(foo.block、mychannel.block)后,再将其发送给peer节点,要求其加入应用通道

peer节点接收到应用通道的创始区块(foo.block、mychannel.block)后,根据创始区块中的信息,连接到orderer节点,开始接收该通道对应的区块

client打包chaincode智能合约源码并发送到peer节点,要求其安装chaincode;peer节点做一定的检查后,安装chaincode。

以上步骤一般用管理员(身份)证书、通过sdk程序或peer命令执行操作

以下步骤一般用普通用户(身份)证书、通过sdk程序或peer命令执行操作

client向peer节点发起instantiate、invoke、query等请求,要求其执行chaincode中的对应函数;peer根据请求的动作和chaincode实例(容器、VM、进程)通信,对执行结果签名返回给client

client收集带有peer节点签名的chaincode的执行结果,封装成交易,发送给order节点,order节点对交易进行批量打包,生成区块后递交给对应的应用通道上的peer节点

peer节点接收区块,并对区块中的每一笔交易进行验证并根据交易中的读写集更新Key-Value-Store,发射区块事件通知

client可以选择接收peer节点的区块事件通知,并查询交易执行结果是否符合预期。

FABRIC的缺点

虽然Fabric对联盟链功能的解耦较彻底,各个功能模块组合应用起来也相对灵活了不少,可配置的模式也变多了。但是整个交易流程变复杂了,没有必要让交易数据在网络里来来回回、流来流去。因为相比计算与存储资源来说,网络资源通常是瓶颈类资源,对于那些对处理时间和可靠性有严格要求的业务,就不太合适了。因此对Fabric做一定的改造是必要的。将Fabric某些功能源码抽取出来,添加一些新代码,组装一个Simpleledger是非常可行的。

相关文章

网友评论

    本文标题:对Hyperledger Fabric的简短总结

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