用兩天時間閱讀和動手實驗了fabric的開發(fā),本文目的在于概述fabric的開發(fā)現(xiàn)狀拍顷。
fabric的定位
fabric文檔的開門見山講了自己的特征:
The fabric is an implementation of blockchain technology, leveraging familiar and proven technologies【注:go語言實現(xiàn)歉秫、第三方CA】. It is a modular architecture allowing pluggable implementations of various function【共識機制可替換,chaincode可復用】. It features powerful container technology to host any mainstream language 【用go或java編寫chaincode】for smart contracts development.
fabric的目標是用于哪些場景呢侍郭?這里給出了典型應用場景匕得,包括:B2B合約、制造供應鏈栈虚、資產(chǎn)托管袖外,并且總結了每種場景下各參與方及其行為。
fabric開發(fā)者分類
fabric將開發(fā)者分為兩類:
- 一類是用fabric提供的SDK去實施行業(yè)應用魂务;
- 另一類則是幫助完善fabric自身曼验。
fabric推薦第一類開發(fā)者下載官方image,并在docker下開發(fā)粘姜;第二類用戶則下載編譯代碼運行鬓照。
本文主要針對第一類開發(fā)進行評估。
fabric的SDK主要能做啥孤紧?
1.用go豺裆、java編寫chaincode(類似以太坊的智能合約);
2.用cli/restAPI/nodejs 部署号显、調用chaincode臭猜。
環(huán)境搭建
分以下幾步:
- 安裝docker環(huán)境
- 下載fabric提供的image
- docker-compose up運行image,啟動fabric-peer押蚤、fabric-membersrvc蔑歌、fabric-starter-kit節(jié)點
- 在docker終端下cli與節(jié)點交互、或者在docker下運行nodejs應用揽碘;或者通過RestAPI與節(jié)點交互(可以在docker外執(zhí)行次屠,相當于http協(xié)議跨主機交互)
細節(jié)過程在這里。
RestAPI方式的交互雳刺,我參考了這篇文章劫灶。Rest測試工具用的是PostMan,以raw json post方式提交就好掖桦。
免費午餐
對Hyperledger應用開發(fā)者而言浑此,IBM Bluemix提供免費的入門級區(qū)塊運行環(huán)境,具體操作請移步這里滞详。作者的其它文章也推薦——看完這幾篇文章凛俱,就算不動手,也大致了解fabric的應用開發(fā)能做什么料饥?怎么做的蒲犬?
贊與槽
超級賬本的目標——行業(yè)實施區(qū)塊鏈應用的基礎組件,以下幾點是邁向工程化的進步:
- 利用成熟語言和工具來開發(fā)岸啡,沒有再發(fā)明一種腳本語言原叮;
- 明確給出了應用場景及用例;
- 模塊化設計巡蘸;
- 提出數(shù)據(jù)的受限訪問奋隶;
從開發(fā)者的角度來考慮,我認為fabric距離其目標尚存在以下差距:
- 缺debug悦荒!缺debug唯欣!缺debug!
- chaincode只看到build->deploy->invoke搬味,debug在哪里親境氢?目前看來出錯時似乎只能依賴log輸出分析;
- 用nodejs寫application也是如此碰纬,只能運行在docker下萍聊,雖然提供了與宿主機共享的mytest目錄,可以在宿主機下用ide修改代碼悦析,在docker下run/debug寿桨,但是缺一體化的ide,程序員的開發(fā)效率一定龜爬强戴。