開源進(jìn)展 | WeBASE lab-rc2 發(fā)布,支持Liquid合約與權(quán)限管理
WeBASE (WeBank Blockchain Application Software Extension)是在區(qū)塊鏈應(yīng)用和FISCO BCOS底層之間搭建的一套通用組件,圍繞交易、合約、密鑰管理、數(shù)據(jù)、可視化管理來(lái)設(shè)計(jì)各個(gè)模塊,屏蔽了區(qū)塊鏈底層的復(fù)雜度,從而極大降低研發(fā)門檻,提速區(qū)塊鏈應(yīng)用開發(fā)效率。
自FISCO BCOS v3.0發(fā)布以來(lái),WeBASE團(tuán)隊(duì)協(xié)同F(xiàn)ISCO BCOS開源社區(qū),緊鑼密鼓開展適配工作,于今年2月底推出WeBASE lab版(點(diǎn)擊了解詳情),以便開發(fā)者高效部署和管理FISCO BCOS v3.0。WeBASE lab版提供了與FISCO BCOS v3.0相匹配的鏈上數(shù)據(jù)概覽、合約IDE、交易管理、私鑰管理等運(yùn)維管理功能,并提供快速部署工具,用戶可以一鍵部署FISCO BCOS v3.0,在可視化的Web管理臺(tái)中管理智能合約,發(fā)起交易與鏈交互。
目前,在社區(qū)開發(fā)者的通力協(xié)作下,WeBASE lab-rc2版本正式發(fā)布,新增Liquid合約支持、權(quán)限管理等功能,適配FISCO BCOS v3.0 rc2版本,歡迎大家star并積極體驗(yàn)。
一起來(lái)看看WeBASE lab-rc2的功能介紹吧!
本次更新中,WeBASE新增了對(duì)Liquid合約的編譯、部署、調(diào)用等功能。
Liquid 是微眾區(qū)塊鏈推出的全新一代智能合約編程語(yǔ)言(點(diǎn)擊了解詳情)。它以 Rust 語(yǔ)言為載體,以涵蓋安全(Security)、性能(Performance)、體驗(yàn)(Experience)及定制能力(Customization)四個(gè)方面的“SPEC”智能合約編程語(yǔ)言設(shè)計(jì)規(guī)范為基礎(chǔ),通過(guò)貼合區(qū)塊鏈應(yīng)用特色的創(chuàng)新語(yǔ)言設(shè)計(jì),助力實(shí)現(xiàn)智能合約開發(fā)過(guò)程更友好,運(yùn)行更高效,功能更強(qiáng)大,降低開發(fā)者接入?yún)^(qū)塊鏈應(yīng)用的門檻。
https://liquid-doc.readthedocs.io/zh_CN/latest/
按以下步驟,即可在WeBASE中實(shí)現(xiàn)對(duì)Liquid合約的編譯、部署、調(diào)用。
配置編譯環(huán)境
編譯合約前,需要先在WeBASE-Front所在主機(jī)中配置Liquid的編譯環(huán)境。按照Liquid配置文檔完成編譯環(huán)境配置后,進(jìn)入WeBASE合約IDE即可開始體驗(yàn)Liquid合約。
Liquid配置文檔地址:
https://webasedoc.readthedocs.io/zh_CN/lab/docs/WeBASE-Front/liquid.html

圖1:WeBASE合約IDE
進(jìn)行編譯前,合約IDE會(huì)自動(dòng)選中一個(gè)節(jié)點(diǎn)前置用于編譯Liquid合約,如上圖1的右上角所示。如果選中的節(jié)點(diǎn)前置未配置Liquid環(huán)境,將無(wú)法編譯,此時(shí)需要切換一個(gè)擁有Liquid環(huán)境的節(jié)點(diǎn)前置即可。
合約編譯
WeBASE對(duì)Liquid合約采用異步編譯的方式。點(diǎn)擊編譯合約后,WeBASE后臺(tái)開始異步編譯合約,并輪詢后臺(tái)合約是否編譯完成;編譯完成后,WeBASE合約IDE下方將出現(xiàn)合約ABI和合約BIN值,可以進(jìn)行合約部署了。
合約部署、調(diào)用
WeBASE合約倉(cāng)庫(kù)的工具箱合約中新增了 “LiquidHelloWorld”合約模板,我們可以直接將該合約導(dǎo)入到WeBASE合約IDE中,進(jìn)行編譯部署,操作可參考圖2、圖3。

圖2:合約倉(cāng)庫(kù)導(dǎo)入“LiquidHelloWorld”合約模板

圖3:合約部署
Liquid合約的使用方法和Solidity大致相同,合約編譯完成后都將獲得合約的ABI和BIN值,可用于部署和調(diào)用操作。
與Solidity合約部署不同的是,Liquid合約部署時(shí)需要手動(dòng)指定合約地址,且合約地址是以“/”斜杠開頭且必須唯一,如上圖3所示。例如,我們將部署地址設(shè)置為“/test1”進(jìn)行部署,如果當(dāng)前群組已經(jīng)部署過(guò)地址為“/test1”的合約,那么部署將因地址沖突而失敗。
Liquid提供了常用的Liquid合約案例,包含了HelloWorld合約,積分合約等案例,我們可以通過(guò)這些用例快速熟悉、掌握使用Liquid開發(fā)區(qū)塊鏈應(yīng)用的方法,合約案例可通過(guò)以下地址獲取:
Liquid合約集gitee地址:
https://gitee.com/WeBankBlockchain/liquid/tree/main/examples/contract
Liquid合約集github地址:
https://github.com/WeBankBlockchain/liquid/tree/main/examples/contract
更強(qiáng)大的權(quán)限治理功能
FISCO BCOS v3.0在原有的“鏈治理委員會(huì)”和“合約管理員”的權(quán)限治理體系中,引入了“合約粒度”的權(quán)限治理。在最新的權(quán)限治理中,用戶不僅可以管理“鏈”和“合約”維度的權(quán)限,還可以通過(guò)設(shè)置“白名單”和“黑名單”策略來(lái)管理具體合約中某個(gè)函數(shù)方法的調(diào)用權(quán)限。

圖4:FISCO BCOS v3.0權(quán)限治理設(shè)計(jì)
治理委員:對(duì)鏈級(jí)別進(jìn)行治理、屬于鏈的頂層管理者。權(quán)限包括:治理委員選舉、凍結(jié)、解凍等;對(duì)合約管理員進(jìn)行管理等。
合約管理員:對(duì)合約方法訪問(wèn)權(quán)限進(jìn)行分配管理。部署合約的用戶默認(rèn)為合約管理員。 普通用戶:如果合約管理員未對(duì)合約設(shè)置權(quán)限類型,則默認(rèn)所有用戶都可調(diào)用合約接口;如果設(shè)為白名單,則用戶在白名單當(dāng)中才能訪問(wèn);如果設(shè)為黑名單,則用戶黑名單中就無(wú)法訪問(wèn)對(duì)應(yīng)接口。
FISCO BCOS v3.0通過(guò)更細(xì)粒度的權(quán)限治理設(shè)計(jì),讓用戶在區(qū)塊鏈上更高效地完成更精準(zhǔn)范圍的權(quán)限控制,提高了聯(lián)盟鏈中各機(jī)構(gòu)的權(quán)限治理效率,降低協(xié)商成本。此次更新的WeBASE lab-rc2版本,實(shí)現(xiàn)了對(duì)FISCO BCOS v3.0權(quán)限治理功能更全面地支持。
啟用并初始化權(quán)限治理功能
使用FISCO BCOS v3.0的權(quán)限治理功能,需要在搭建區(qū)塊鏈節(jié)點(diǎn)時(shí)"開啟權(quán)限管理",相應(yīng)地,通過(guò)WeBASE進(jìn)行一鍵部署搭鏈操作時(shí),需要在配置文件中啟用權(quán)限治理功能(fisco.auth=1)。
以WeBASE一鍵部署為例,我們啟用權(quán)限治理并完成搭建后,在鏈的 nodes/ca/account 目錄下將出現(xiàn)隨機(jī)生成的鏈管理員.pem私鑰文件。保存該私鑰文件,通過(guò)如下圖5所示的“導(dǎo)入管理員私鑰”功能,將鏈的管理員私鑰導(dǎo)入WeBASE中進(jìn)行管理。完成初始委員私鑰導(dǎo)入后,我們可以通過(guò)該私鑰進(jìn)行新增其他治理委員的操作。

圖5:導(dǎo)入初始委員私鑰
權(quán)限治理的提案與投票
在進(jìn)行權(quán)限治理時(shí),用戶每發(fā)起一次權(quán)限修改的操作,該操作被視為一次投票,相同權(quán)限修改操作中的第一次投票會(huì)自動(dòng)產(chǎn)生一個(gè)提案。如,鏈治理委員Alice將新用戶Caron設(shè)置為新的鏈委員,則該操作會(huì)自動(dòng)生成一個(gè)“提案”,此時(shí)另一個(gè)鏈治理委員Bob也設(shè)置Caron為新的鏈委員,則此時(shí)不會(huì)產(chǎn)生重復(fù)的提案,而是變成Bob對(duì)該提案投出了“同意”票。每個(gè)委員都可以發(fā)起提案或者對(duì)提案投“同意”或“反對(duì)”票。
總投票權(quán)重 / 總權(quán)重 >= 投票參與率 總同意權(quán)重票 / 總投票權(quán)重 >= 投票加權(quán)同意率
在WeBASE中進(jìn)行權(quán)限治理
設(shè)置鏈上權(quán)限:WeBASE “系統(tǒng)管理-權(quán)限管理”頁(yè)面中,用戶可以通過(guò)可視化頁(yè)面對(duì)鏈上的權(quán)限進(jìn)行快速設(shè)置,目前包含新增/撤銷委員投票(setWeight)、設(shè)置委員投票權(quán)重(setWeight)、設(shè)置閾值(setRate)三種操作,其中新增委員、撤銷委員和修改委員投票權(quán)重都是屬于setWeight設(shè)置權(quán)重類型的投票。
比如,我們?cè)O(shè)置閾值(投票加權(quán)通過(guò)率)和投票參與率都設(shè)為55,意味著參與投票的委員數(shù)要大于55%,且委員投票后的加權(quán)同意率大于55%,具體如下圖6所示:

圖6:WeBASE權(quán)限管理頁(yè)面
修改鏈上權(quán)限:用戶對(duì)權(quán)限的任意修改都會(huì)自動(dòng)產(chǎn)生一個(gè)提案,該提案會(huì)在頁(yè)面下方的提案列表中出現(xiàn),我們可以在列表中查看提案的類型、通過(guò)狀態(tài)、提案編號(hào)、提案發(fā)起者等信息,如圖7所示。用戶也可以進(jìn)行“委員投票”,對(duì)提案進(jìn)行同意或否定的投票操作,這里注意,“撤銷提案”功能需要第一個(gè)發(fā)起投票的鏈委員才能撤銷。

圖7:WeBASE提案列表
更多關(guān)于權(quán)限治理的設(shè)計(jì)與使用方法參考以下文檔:
https://fisco-bcos-doc.readthedocs.io/zh_CN/latest/docs/develop/committee_usage.html
FISCO BCOS v3.0權(quán)限治理體系設(shè)計(jì):
https://fisco-bcos-doc.readthedocs.io/zh_CN/latest/docs/design/committee_design.html
全新的BFS功能
FISCO BCOS v3.0引入了全新的區(qū)塊鏈合約文件系統(tǒng) BFS(Blockchain File System)功能,將區(qū)塊鏈中的合約資源使用樹形文件目錄形式進(jìn)行組織劃分管理,BFS旨在方便用戶進(jìn)行合約資源的管理,實(shí)現(xiàn)資源路徑分區(qū)管理,不同分區(qū)不同職責(zé)的效果。如圖8所示,BFS是一個(gè)邏輯結(jié)構(gòu),表現(xiàn)為多級(jí)的目錄層。

圖8:BFS設(shè)計(jì)
BFS中文件類型包含了 directory 目錄類型和 contract 合約文件類型。
WeBASE中的BFS功能
在WeBASE的BFS操作頁(yè)面中,默認(rèn)的目錄為“/”根目錄,從下圖9在WeBASE中的文件列表我們可以看到,根目錄下包含了"sys", "apps", "tables", "usr" 四個(gè)目錄文件,四個(gè)目錄的功能如下表1所示:
表1:BFS根目錄
以"apps"目錄為例,所有用戶部署的合約默認(rèn)存儲(chǔ)在apps目錄下。例如,我們部署了一個(gè)Liquid合約,其合約地址在部署時(shí)指定為"test1",那么在”apps"目錄下將創(chuàng)建一個(gè)type為directory的"test1"目錄文件,里面包含了一個(gè)type為contract的"test1"的合約文件。

圖9:WeBASE BFS頁(yè)面
ls:獲取指定目錄的文件列表,包括目錄與文件 cd:切換當(dāng)前目錄為指定目錄 mkdir:在當(dāng)前目錄下創(chuàng)建目錄,僅限于"apps"和”tables"目錄下創(chuàng)建
https://fisco-bcos-doc.readthedocs.io/zh_CN/latest/docs/design/contract_directory.html#
優(yōu)化和修復(fù)
優(yōu)化:支持CNS功能、Event查看功能
優(yōu)化:支持?jǐn)?shù)據(jù)大屏與移動(dòng)端展示功能
優(yōu)化:增加交易回執(zhí)中status狀態(tài)碼的中英文提示
修復(fù):升級(jí)依賴包中springboot 1.x到2.x
上述優(yōu)化及功能所涉及的最新代碼和技術(shù)文檔已同步更新至WeBASE代碼倉(cāng)庫(kù)【lab】分支。
查看WeBASE頁(yè)面中的版本信息 查看部署WeBASE時(shí)輸出的版本信息 查看WeBASE源碼或安裝包中的release_note.txt
如需咨詢技術(shù)問(wèn)題,歡迎本公眾號(hào)對(duì)話框回復(fù)【小助手】進(jìn)技術(shù)交流群。
https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/doc/lab-rc1/index.html
https://webasedoc.readthedocs.io/zh_CN/lab/docs/WeBASE/install.html





