很多小伙伴毕业设计选择Fabric方向,大家对Fabric了解比较少,不知道该怎么开展,选的题目难度如何,需要多久的开发时间,怎么编写智能合约…
大家比较茫然,不知道怎么下手,总结一下大家的问题,希望对你们有帮助。
1.别给自己挖坑,对于技术改进要谨慎。
1)共识算法改进
如果您选择的是这个话题,恭喜你这个难度灰常大。Fabric共识算法改进,就算是企业级专业团队也需要比较长的时间开发,投入比较多的精力,专业团队还是建立在已经比较了解Fabric内部实现逻辑的基础上的。比如:PBFT算法改进,这里面理论是一回事,工程实践是另一回事,多种状态机转移场景很容易出现Bug,替换原由的etcdraft这么简单,类PBFT还需要修改区块头结构,需要动Peer节点的代码,并没有这么简单,再加上PBFT新增共识节点,这部分逻辑设计也比较复杂,虽然网上有很多改进PBFT的例子、以及基于caliper的测试,但实际操作后,你会大失所望的 ~
2) 智能合约间交互
有些同学对区块链模式进行创新,当某个节点对应的智能合约接收到数据转发给其他节点的智能合约,这点是很难做到的。为保证区块链所有合约执行的一致性,合约尽可能不去访问外部系统,以防止世界状态不一致。比如获取当天的天气情况并记录到区块链,获取天气情况对应的外部系统可能在不同时间获取到的数据不一致,导致智能合约存储的数据不一致,区块链网络执行异常。
3)智能合约引擎改进
这个话题比起智能合约间交互,是一个没有违背区块链涉及理念的改进。比如支持EVM引擎,这个方向很好,仍然是难度比较大。Fabric为了保证Peer节点与合约能够正常通信,设计一套交互机制、心跳机制,需要把这段逻辑看懂并改进。第二个难点是EVM需要一些自定义方法与Fabric底层进行通信,例如获取合约Key值,设置Key值等等,这部分是需要花时间来研究学习的,总之成本比较高,但是一个好题目。
2. 尽量选择依托业务场景的课题。
项目重点强调业务场景如何使用区块链,使用分布式账本技术有怎样的好处,弱化分布式账本系统本身。如果是做课题的时候现学Fabric技术,理解区块链底层原理、操作方法会比较生疏,万一被评审老师问到知识盲点,一紧张容易答不上,脑瓜子嗡嗡的~
3. Fabric学习路径。
如果你是真的有想法、有动力了解区块链技术,建议你学习的路径如下:
- Fabric环境部署。现在网上环境部署贴子超级多,但很多都没办法使用,这个不能怪贴子的作者,作者写文章的时候,帖子的方法确实是可用的。但随着时间推移,代码更新,且Fabric官方Sample工程的版本控制不太好,加上不同Docker与Docker-compose版本导致部署起来问题比较多。这个版本比较新,我们商用也是用这个版本,妥妥的没问题。
- docker学习。docker是容器化技术,fabric的peer、order、chaincode都是以容器形式运行的,这里不需要花费大量时间学习docker原理,只需要会一些docker的命令,例如docker
ps、docker images、docker exec等。- 部署脚本学习。官方sample下的test_network有脚本负责集群的启动,新增节点、install、approve、commit chaincode,这里需要一行一行的阅读,读明白集群启动的时候
shell脚本都干了什么事情,怎样添加的合约。学习shell,网上找个菜鸟教程就可以。- 智能合约开发。这里需要读明白官方提供的basic例子是如何运行的,什么API能插入数据,什么API能查询数据,再查看basic如何使用命令行来发送数据的、开发完的合约如何打包、如何安装到区块链上(这里需要运用上一步学到的脚本知识)
- 学习部署区块链浏览器。通过区块链浏览器可以查看通道信息、组织信息、合约信息、节点信息等等,当你操作完合约,可以通过浏览器进行验证。
4. 做个广告 (Fabric2.2 全面学习)
最近在整理Fabric2.2的一个全面学习材料(在我的专栏),思路:把官方Demo从头到尾跑一遍,然后依托一个业务场景(农产品溯源)带领大家做一遍,从需求整理、方案设计、自定义集群部署、合约开发、合约安装、测试脚本编写,做一个全流程的课程,为新手准备,有经验的就不要掺和了~ 同时大家有什么想听的、没学明白的,我可以在评论区解答,或者有业务场景不知道如何基于区块链做方案设计的,也可以给大家聊聊(设计免费,不收Money)
区块链业务场景、技术资料的可以在CSDN私聊我(CSDN不允许发微信号的),试试看吧,有就给大家了,没有就没办法了,祝大家好运。