華為云計(jì)算 云知識 技術(shù)解析+代碼實(shí)戰(zhàn),帶你入門華為云政務(wù)區(qū)塊鏈平臺
技術(shù)解析+代碼實(shí)戰(zhàn),帶你入門華為云政務(wù)區(qū)塊鏈平臺

【摘要】 區(qū)塊鏈 技術(shù)在數(shù)據(jù)共享、 數(shù)據(jù)安全 、隱私保護(hù)、確權(quán)確責(zé)等方面的技術(shù)優(yōu)勢,使其在政府、金融、供應(yīng)鏈、交通等各個(gè)領(lǐng)域展現(xiàn)出廣闊的應(yīng)用前景。政務(wù)區(qū)塊鏈平臺是行業(yè)區(qū)塊鏈平臺的初步實(shí)踐,未來在區(qū)塊鏈技術(shù)的發(fā)展下,還會打造面向其他領(lǐng)域的鏈管平臺,構(gòu)建多方協(xié)同的分布式賬本,讓區(qū)塊鏈應(yīng)用更便捷高效的為產(chǎn)業(yè)服務(wù)。

1、行業(yè)區(qū)塊鏈平臺誕生背景

互聯(lián)網(wǎng)時(shí)代下,區(qū)塊鏈作為一種分布式的公開賬本,具有去中心化、開放匿名、不可偽造篡改等特點(diǎn),憑借其獨(dú)特的信任機(jī)制和信息傳遞技術(shù),在金融、醫(yī)療、教育等各個(gè)領(lǐng)域都有著廣泛的應(yīng)用,推動著科技領(lǐng)域的變革。

傳統(tǒng)BaaS(Blockchain as a Service)平臺將區(qū)塊鏈集成為云服務(wù)提供給客戶,想比于PaaS平臺而言,充分利用了 云計(jì)算 的彈性、穩(wěn)定性和靈活性;而行業(yè)區(qū)塊鏈平臺又是在BaaS平臺之上的區(qū)塊鏈中臺應(yīng)用,在業(yè)界標(biāo)準(zhǔn)不統(tǒng)一、架構(gòu)參差不齊的大背景下,充分屏蔽了底層鏈在模型和部署流程上的差異,進(jìn)一步節(jié)省了用戶部署業(yè)務(wù)和應(yīng)用的成本,實(shí)現(xiàn)了跨云服務(wù)的一站式異構(gòu)鏈管理。即便是技術(shù)薄弱的用戶也可通過此平臺實(shí)現(xiàn)快速統(tǒng)一的規(guī)劃建站,滿足各類業(yè)務(wù)需求,解決了區(qū)塊鏈技術(shù)人才短缺、運(yùn)維人力成本高的難題。

2、政務(wù)區(qū)塊鏈平臺介紹

政務(wù)領(lǐng)域的用戶具有主體多、環(huán)節(jié)復(fù)雜、信息量大等特點(diǎn),傳統(tǒng)數(shù)據(jù)共享模式下,業(yè)務(wù)辦理效率和數(shù)據(jù)共享能力較低,不僅需要大量的人工審批,文件、庫表在復(fù)制傳遞的過程中還可能引發(fā)數(shù)據(jù)不一致,信息泄露,時(shí)效性較弱,且不易管理。自2016年起,國家鼓勵(lì)探索“政務(wù)上鏈”,利用區(qū)塊鏈的數(shù)據(jù)共享模式實(shí)現(xiàn)政務(wù)數(shù)據(jù)跨部門、跨區(qū)域的共同維護(hù)和利用,推動政務(wù)數(shù)字化改革,實(shí)現(xiàn)智能化的社會治理。

政務(wù)區(qū)塊鏈平臺UGBaaS(Unified Governmental BaaS)是針對政務(wù)行業(yè)開發(fā)的新型鏈管平臺,一個(gè)集中式的運(yùn)營運(yùn)維系統(tǒng),允許用戶平滑接入名下的各類區(qū)塊鏈,實(shí)現(xiàn)統(tǒng)一的管理監(jiān)控。它極大的簡化了業(yè)務(wù)流程,包含身份認(rèn)證管理、業(yè)務(wù)管理、憑證轉(zhuǎn)換服務(wù)、數(shù)據(jù)采集和展現(xiàn)服務(wù)、合約倉庫和應(yīng)用倉庫、內(nèi)部api網(wǎng)關(guān)等功能模塊,使得管理員可以輕松地治理底層資源,管理租戶配額,一鍵部署聯(lián)盟和智能合約,并監(jiān)控底層鏈和節(jié)點(diǎn)。底層自然支持Hyperledger Fabric區(qū)塊鏈,亦可納管Ethereum、Quorum等異構(gòu)鏈。

3、主要功能模塊

管理員視角:

租戶視角:

4、平臺主要技術(shù):

? 組件多活與多region容災(zāi):

政務(wù)區(qū)塊鏈平臺部署在一個(gè)多節(jié)點(diǎn)高可用集群上,每個(gè)容器都有相同處理業(yè)務(wù)的能力,部分節(jié)點(diǎn)故障時(shí)服務(wù)仍能繼續(xù)使用,達(dá)到一定的容災(zāi)性。平臺內(nèi)部需要存儲大量數(shù)據(jù),因此在部署時(shí)同期部署了分布式的 數(shù)據(jù)庫 ,均勻的部署在集群的每個(gè)節(jié)點(diǎn)上。數(shù)據(jù)庫內(nèi)部采用高一致性算法,并維護(hù)多個(gè)歷史版本數(shù)據(jù),在檢測到當(dāng)前監(jiān)聽的數(shù)據(jù)庫節(jié)點(diǎn)健康狀態(tài)異常后會自動建立新的客戶端連接,切換連接源,保證數(shù)據(jù)的強(qiáng)一致性和高可用性。

? 雙重緩存層與請求消息隊(duì)列:

政務(wù)區(qū)塊鏈平臺組件對外開放一套標(biāo)準(zhǔn)政務(wù)接口,部署時(shí)會簽發(fā)一套tls證書并提供下載方式,用戶可以通過該證書連接到組件上,通過調(diào)用開放API運(yùn)行相應(yīng)功能。由于涉及大量接口調(diào)用,組件入口處設(shè)置了雙重緩存層,保證不必要的底層接口調(diào)用,加強(qiáng)接口性能。當(dāng)用戶請求到達(dá)組件時(shí),消息處理的流量控制器會拒絕容量外的請求,容量內(nèi)的請求會按到達(dá)順序依次下發(fā),并在消費(fèi)請求后以一定的qps繼續(xù)填充隊(duì)列,保證組件的穩(wěn)定。

? 流程引擎與任務(wù)樹:

平臺內(nèi)部需維護(hù)聯(lián)盟、業(yè)務(wù)鏈、組織和底層BaaS平臺相應(yīng)的實(shí)體關(guān)系,通過映射的方式屏蔽了異構(gòu)鏈模型上的差異(如子鏈、通道的區(qū)別,聯(lián)盟、網(wǎng)絡(luò)的概念,組織、節(jié)點(diǎn)等最小粒度),通過抽象任務(wù)模板對象封裝每個(gè)業(yè)務(wù)操作對應(yīng)的具體步驟, 自動化 的并行或串行執(zhí)行區(qū)塊鏈創(chuàng)建、邀請、通知、審批等任務(wù)。處理器在任務(wù)調(diào)度的時(shí)候根據(jù)反射自動匹配不同的任務(wù)類型,并通過分析嵌套深度解析任務(wù)下的子任務(wù),生成多個(gè)并行任務(wù)流。自動化的流程引擎可以處理用戶下發(fā)的特定任務(wù)、執(zhí)行定時(shí)任務(wù)(如監(jiān)控、日志、審計(jì)、告警、清理等)。任務(wù)執(zhí)行需具備原子性,一旦任務(wù)失敗會自動回滾該任務(wù)中已經(jīng)執(zhí)行的部分。任務(wù)下發(fā)后,用戶可通過任務(wù)進(jìn)度查詢接口獲取當(dāng)前業(yè)務(wù)操作的處理進(jìn)度,一旦任務(wù)失敗會展示詳細(xì)的執(zhí)行記錄和處理建議。樹狀的任務(wù)結(jié)構(gòu)能夠保證同級任務(wù)并發(fā)執(zhí)行,任務(wù)的處理可以使用顏色標(biāo)記法進(jìn)行標(biāo)記,每次執(zhí)行允許一定的容錯(cuò)并設(shè)置超時(shí)時(shí)間,父節(jié)點(diǎn)在檢測到全部子節(jié)點(diǎn)為某個(gè)非進(jìn)行中狀態(tài)時(shí)便會更新,由底向上,直至根節(jié)點(diǎn)狀態(tài)變更完成。

? 異構(gòu)區(qū)塊鏈平臺統(tǒng)一接入:

異構(gòu)鏈統(tǒng)一接入主要有鑒權(quán)方式、模型差異、建鏈審批流程差異等難點(diǎn)。對于無管理面的自有區(qū)塊鏈,政務(wù)區(qū)塊鏈平臺制訂了一套統(tǒng)一接入接口,希望被平臺納管的區(qū)塊鏈只需實(shí)現(xiàn)這套接口便可注冊后接入;對于已有管理面并開放接口的區(qū)塊鏈平臺,政務(wù)區(qū)塊鏈平臺提供接口映射的注冊方式,廠商可以通過注入模板自動將一個(gè)或多個(gè)自有接口映射到政務(wù)區(qū)塊鏈平臺的統(tǒng)一接口上,新鏈接入后平臺會自動執(zhí)行接入校驗(yàn)流程,通過默認(rèn)的內(nèi)置租戶進(jìn)行調(diào)測,檢查新平臺接口的連通性,并通過服務(wù)器健康狀態(tài)的接口定期巡檢平臺的可用性。對于注冊全部變更接口的接入方式,平臺全生命周期的維護(hù)該平臺下的所有區(qū)塊鏈網(wǎng)絡(luò);也提供只注冊管理類接口的納管模式,使用戶對接已部署的區(qū)塊鏈。同時(shí),未來還將考慮以跨鏈方式實(shí)現(xiàn)異構(gòu)鏈的互聯(lián)互通。

5、UGBaaS客戶端sample代碼:

從行業(yè)區(qū)塊鏈平臺新建實(shí)例處點(diǎn)擊下載證書壓縮包,ugbaascert/tls路徑下包含client.crt client.key兩個(gè)文件,示例代碼如下

圖1 證書導(dǎo)入代碼

導(dǎo)入證書后,默認(rèn)連接端口32623,url設(shè)置成政務(wù)接口文檔中的接口,調(diào)用獲取已注冊組織列表接口并解析返回至結(jié)構(gòu)體。

圖2 獲取已注冊組織列表接口代碼

使用政務(wù)區(qū)塊鏈平臺前均需調(diào)用組織注冊接口/v1/ugbaas/orgs,注冊組織和底層租戶的對應(yīng)關(guān)系(域信息、項(xiàng)目信息及aksk等,從 IAM 處獲?。缓蠹纯蛇M(jìn)行創(chuàng)建聯(lián)盟、業(yè)務(wù)鏈、部署智能合約等操作。變更類操作均會返回操作ID,根據(jù)操作ID調(diào)用查詢流程處理進(jìn)度接口獲取當(dāng)前任務(wù)的進(jìn)行狀態(tài)。

結(jié)語:

區(qū)塊鏈技術(shù)在數(shù)據(jù)共享、數(shù)據(jù)安全、隱私保護(hù)、確權(quán)確責(zé)等方面的技術(shù)優(yōu)勢,使其在政府、金融、供應(yīng)鏈、交通等各個(gè)領(lǐng)域展現(xiàn)出廣闊的應(yīng)用前景。政務(wù)區(qū)塊鏈平臺是行業(yè)區(qū)塊鏈平臺的初步實(shí)踐,未來在區(qū)塊鏈技術(shù)的發(fā)展下,還會打造面向其他領(lǐng)域的鏈管平臺,構(gòu)建多方協(xié)同的分布式賬本,讓區(qū)塊鏈應(yīng)用更便捷高效的為產(chǎn)業(yè)服務(wù)。