如何低代碼開發(fā)區(qū)塊鏈應(yīng)用 | 《超話區(qū)塊鏈》回顧

區(qū)塊鏈技術(shù)近年來在國內(nèi)迅速發(fā)展,并在眾多領(lǐng)域開展探索并有不少應(yīng)用落地。作為一門新型技術(shù),區(qū)塊鏈技術(shù)在助力企業(yè)效率提升的同時,在人力成本、聯(lián)盟鏈兼容等方面仍然需要釋放更多可能性。
如何降低區(qū)塊鏈的開發(fā)成本、使其更高效便捷地應(yīng)用到產(chǎn)業(yè)當(dāng)中,成為提升企業(yè)區(qū)塊鏈應(yīng)用價值的關(guān)鍵所在。而目前在區(qū)塊鏈在實際應(yīng)用開發(fā)過程中仍面臨諸多痛點。
為此,微眾銀行區(qū)塊鏈在多年技術(shù)研究和應(yīng)用實踐的基礎(chǔ)上,積極分析、總結(jié)行業(yè)需求,研發(fā)了一套區(qū)塊鏈應(yīng)用開發(fā)組件WeBankBlockchain-SmartDev,用低代碼方式在不影響原有業(yè)務(wù)的基礎(chǔ)上,解決區(qū)塊鏈與原有應(yīng)用之間的連接問題。
研發(fā)區(qū)塊鏈應(yīng)用開發(fā)組件的初衷在于打造低代碼開發(fā)的組件庫,全方位助力開發(fā)者高效、敏捷地開發(fā)區(qū)塊鏈應(yīng)用。
該組件包含了一套開放、輕量的開發(fā)組件集,覆蓋合約開發(fā)、編譯、應(yīng)用開發(fā)等環(huán)節(jié),開發(fā)者可根據(jù)自己的情況選擇相應(yīng)開發(fā)工具,提升開發(fā)效率。
其中包括WeBankBlockchain-SmartDev-Contract智能合約庫組件、WebankBlockchain-SmartDev-SCGP(SmartContractGradlePlugin) 智能合約編譯插件、WebankBlockchain-SmartDev-Scaffold區(qū)塊鏈應(yīng)用開發(fā)腳手架組件等。
對開發(fā)者友好的一鍵式應(yīng)用開發(fā)腳手架、合約模板等功能,便捷區(qū)塊鏈應(yīng)用開發(fā),讓開發(fā)過程朝“低代碼”模式邁進。
區(qū)塊鏈應(yīng)用開發(fā)組件特性與原理
這款應(yīng)用開發(fā)組件從2020年初開始籌劃,在 DAPP的開發(fā)過程中也存在過各種各樣問題。在解決這些問題的過程中積累了一些經(jīng)驗,我們將這些經(jīng)驗成功復(fù)用到應(yīng)用開發(fā)組件中,下面我們一起看看應(yīng)用開發(fā)組件的特性及原理。
-
基礎(chǔ)類型層:它包含數(shù)學(xué)運算、字符串相關(guān)操作、數(shù)組操作和地址操作等。 -
數(shù)據(jù)結(jié)構(gòu)層:它包含一些數(shù)據(jù)結(jié)構(gòu),例如可迭代映射、鏈表等 -
通用功能層:它包含一些crud合約,還有一些密碼學(xué)操作。 上層業(yè)務(wù)層:包含溯源,存證等業(yè)務(wù)模板。
其次是合約編譯插件。傳統(tǒng)的操作方式是上傳合約到控制臺,跑腳本,再將合約的內(nèi)容拷貝出來,頻繁的編譯和調(diào)試過程需花費大量的時間。而合約編輯插件只需執(zhí)行簡單的指令,全自動生成放到指定的位置,不用做額外拷貝。
組件根據(jù)當(dāng)前的環(huán)境,選擇對應(yīng)的jar包,把 Solidity文件讀取出來并編譯,編譯會輸出三個內(nèi)容,分別是ABI、BIN、Java合約。其中 ABI是接口,智能合約的接口定義;BIN是合約二進制,它包含國密版的二進制和非國密版的二進制;Java合約包含通過Java的方式去調(diào)用智能合約接口。
最后是應(yīng)用開發(fā)腳手架,腳手架生成通用的DAPP項目結(jié)構(gòu)。
首先,它包含合約、ABI和BIN關(guān)于合約相關(guān)的一些資源文件。
其次就是代碼,可以分成兩部分:connection,config,utils,這些是用來連接區(qū)塊鏈和FISCO BCOS。
再其次是service和POJO。service對應(yīng)的是智能合約的調(diào)用,POJO是智能合約的函數(shù)輸入。service的方法對應(yīng)的是智能合約中的函數(shù),調(diào)用service的方法,會自動進行拼裝交易、回執(zhí)解析。
腳手架的原理包含如下幾點,首先進行一些通用的檢測,然后生成模板文件,對智能合約進行編譯,解析ABI的每一個合約的每一個函數(shù),讀取它的參數(shù),拼裝成對應(yīng)的Java類,最后生成項目的構(gòu)建。
區(qū)塊鏈應(yīng)用開發(fā)組件工具實操
實操演示可配合視頻回放享用
首先訪問智能合約庫地址,它包括上層業(yè)務(wù),基礎(chǔ)類型、數(shù)據(jù)結(jié)構(gòu)、通用功能層,可以看到一些庫文件,還有一些demo,很方便去調(diào)用庫里的文件。
其次是合約編譯插件的實操。合約編輯插件其實使用起來也是很簡單的,首先打開官方文檔,對builg.gradle進行依賴等配置,然后執(zhí)行g(shù)radle solc即可,插件會讀取到項目的hello world合約,默認會從contract來讀取合約, 然后生成ABI和Java合約。
最后是應(yīng)用開發(fā)腳手架演示。先將腳手架的代碼給拷貝下來。進入tools目錄,在contract已經(jīng)默認放了合約,然后是config.ini,這里可以定義一些常用的內(nèi)容,比如項目名、group組、編譯編譯器的版本、solidity版本等,我們可以按需改這些內(nèi)容。在windows和UNIX環(huán)境下會提供一個bat文件和shell文件。
我們來看下生成的項目。這是一個springboot項目,里面有對應(yīng)的依賴,包括像Java SDK,springboot等,從生成的代碼看,最核心的代碼是hello world service,它對應(yīng)hello world合約,service則對應(yīng)著合約里面的set和get函數(shù),調(diào)用set函數(shù)或者get函數(shù),從而調(diào)用對應(yīng)的智能合約。
從resource目錄可知,里面包含了智能合約的輸入和輸出。同時也有conf目錄,幫助大家將鏈的節(jié)點上的一些證書拖下來,可以放在conf目錄。application、properties是springboot的比較標(biāo)準(zhǔn)的配置文件。
從test目錄可知, test里面會放了一些常用的功能,比如生成私鑰,部署一個合約,開發(fā)者可以根據(jù)自己的想法,把這些功能放到demo里。這就是腳手架生成的demo項目,它包含很多以智能合約為核心的功能。
最后,歡迎大家一起共同建設(shè)區(qū)塊鏈應(yīng)用開發(fā)組件,智能合約庫長期征集合約庫代碼,里面有幾十個任務(wù)任大家挑選,完成任務(wù)還將獲得禮品,歡迎參與!
點擊閱讀原文參與智能合約庫活動。
體驗WeBankBlockchain-SmartDev:
SmartDev-Contract 智能合約庫組件
https://github.com/WeBankBlockchain/SmartDev-Contract
SmartDev-SCGP 合約編譯插件
https://github.com/WeBankBlockchain/SmartDev-SCGP
SmartDev-Scaffold 應(yīng)用開發(fā)腳手架
https://github.com/WeBankBlockchain/SmartDev-Scaffold
《超話區(qū)塊鏈》
《超話區(qū)塊鏈》是由FISCO BCOS 開源社區(qū)推出的直播活動,每周四晚8點,社區(qū)邀請一位技術(shù)極客或應(yīng)用先鋒,做客直播間分享開發(fā)實踐或應(yīng)用心得。作為社區(qū)固定欄目,《超話區(qū)塊鏈》已舉辦近百場,從技術(shù)研討到產(chǎn)業(yè)應(yīng)用均有觸達,歡迎大家自薦或推薦朋友到直播間分享。公眾號對話框回復(fù)小助手入群觀看直播。
FISCO BCOS的代碼完全開源且免費
下載地址↓↓↓
https://github.com/FISCO-BCOS/FISCO-BCOS

