如何在BSN上建立基於FISCO BCOS的應用?

買賣虛擬貨幣
4月25號,由國家資訊中心進行頂層設計的區塊鏈服務網路BSN正式啟動全球商用,FISCO BCOS同期完成BSN適配工作,成為目前BSN中首個完成適配整合的國產聯盟鏈底層框架。目前,開發者可在BSN上使用FISCO BCOS區塊鏈平臺開發與部署應用,此外,FISCO BCOS也針對BSN適配需求進行了一系列特性和功能最佳化。為方便開發者熟悉BSN上應用開發的流程,FISCOBCOS開源社羣舉辦的《沙場練兵|寫出高水準智慧合約》線上直播Meetup上,社羣核心開發者劉明臻現場進行例項演示,手把手分享如何在BSN上建立基於FISCO BCOS的應用。我們整理了直播的精彩內容與提問,供大家交流學習,演講PPT也全文提供給大家對照進行開發演練。在BSN上建立新應用流程開發前需要在BSN上建立一個新應用,建立的具體步驟如下。
第1步 :註冊BSN賬號並登入BSN門戶地址:https://www.bsnbase.com/第2步 :建立新服務

路徑如下:我釋出的應用>我釋出的服務>建立新服務。需按提示填寫相關資訊,如服務名稱、服務型別、版本號等,在選擇平臺型別時需注意應選擇fisco-2.4.0s-sm2。

第3步 :選擇鏈碼

建立區塊鏈應用時,需上傳提前備好的智慧合約;這裡,我們上傳一個ok合約,用於接下來的例項演示。

第4步 :選擇城市節點

城市節點即區塊鏈節點,在BSN釋出應用時,需選擇應用執行在哪些城市節點。選擇城市節點後,BSN會專門為該應用建立一個群組,後續該應用的智慧合約和交易都會執行在群組裡,各應用之間透過群組隔開。

選擇城市節點時,需要先點選檢索後才會出現下圖所示列表。公測期最多可選擇三個城市節點。

第5步 :提交稽覈

建立新應用請求提交之後將傳送給BSN進行人工稽覈。如稽覈透過,BSN會部署智慧合約,並在部署成功後通知開發者。

在BSN上開發例項演示

BSN是面向開發者提供基於區塊鏈執行環境的基礎設施網路,以網際網路理念為客戶提供公共區塊鏈資源環境,幫助客戶快速、低成本地開發、部署、運營和維護區塊鏈應用(DApp)。

完整的區塊鏈應用一般包含兩部分:鏈上智慧合約(應用服務鏈碼DApp Service Chaincode)和鏈下業務系統(off-BSN system)。

鏈下業務系統透過服務網路公共城市節點(Public City Nodes 或 PCN)閘道器(gateway)呼叫在城市節點上部署的應用服務鏈碼進行鏈上交易處理、資料寫鏈和資料查詢等操作。

服務釋出者(Publisher)和參與方(Participant)可使用自己選擇的 IDC 資源或雲服務平臺部署自己的鏈下業務系統,並透過網際網路連線到城市節點閘道器訪問應用服務鏈碼。

· 合約鏈碼簡介

前面提到,在上傳鏈碼包時需要將提前備好的智慧合約程式碼上傳。在此我們上傳的是一個簡單的ok合約做例項演示。

合約部署、釋出成功後將進入下一階段:編寫應用邏輯程式碼來呼叫智慧合約(完成整個區塊鏈應用的鏈下開發)。

接下來我們將演示在BSN上建立一個區塊鏈應用的整體流程,包括配置替換、編寫呼叫程式碼、呼叫合約等。

· 開發前準備

查閱資料

· BSN門戶上檢視開發者手冊、開發例項,這是學習使用BSN開發區塊鏈應用的重要途徑。

· 下載FISCO BCOS開發示例及預置智慧合約包

資料獲取路徑:
BSN開發者手冊>下載《FISCO BCOS開發示例》
BSN門戶開發例項 >下載《FISCO BCOS預置智慧合約包》

配置替換

下載《FISCO BCOS開發示例》並匯入到IDE裡,需要先進行配置替換後才能連上BSN閘道器傳送交易。

需要替換的配置有三個:證書、閘道器地址、使用者資訊。

· 替換證書。因為通訊採用ssl加密方式,所以需要替換資原始檔中的證書檔案,如下圖所示,找到所有證書進行替換,需要注意以下特殊替換規則:

gateway_public_cert <---> gayeway_public_cert_(secp/sm2)(這裡選sm2)
bsngate_https <---> bsn_gateway_https

· 替換閘道器地址。如下圖所示找到閘道器地址,填寫ip和埠。

· 替換使用者資訊和合約名稱。呼叫應用時首先要有對應的使用者資訊,因此需要填寫userCode和appCode;合約名稱可以從「我參與的服務資訊」裡檢視。

配置替換到這裡就全部完成。

· 編寫呼叫程式碼

首先,在應用服務接入配置引數中檢視需要呼叫的鏈碼名稱和合約地址,這裡用到智慧合約函式主要有get函式和trans函式。

其次,在com.reddate.contract.controller.WorkController新增okTrans介面。

新增程式碼如下圖:

此處說明下ok合約裡trans函式呼叫方式:

· 構造一個訪問合約的引數和被訪問合約的函式名;
· 把引數、函式名及userId封裝成合約請求包發往閘道器;
· 閘道器把資訊轉發給Front docker;
· Front docker組成一個區塊鏈交易包並簽名,再把簽名交易傳送給真正的節點;
· 節點共識,返回執行結果;
· 解析執行結果獲得:交易雜湊、block雜湊以及合約的返回值。

okGet介面呼叫流程和上述trans函式呼叫流程一致,區別在於設定的引數不同。如需呼叫其他介面,可以構造對應引數列表、不同的函式名,選擇不同使用者(角色)來呼叫即可。

· 呼叫演示

下面演示合約呼叫,測試呼叫程式碼是否正確、閘道器是否聯通等。

啟動服務

啟動FISCO BCOS預置智慧合約包,它是一個web服務,可透過8100埠訪問,我們構造http請求,使用postman進行呼叫。

檢視服務是否正常

傳送getBlockHeight請求塊高,透過檢視塊高來確定服務是否正常。將請求發到鏈上後,會返回一個結果說明塊高;如果能正常收到返回,證明該服務已啟動成功,並已連線上BSN閘道器,群組和節點也正常。

註冊user

BSN中FISCO BCOS目前採用私鑰託管模式。發交易時,首先需要呼叫registUser介面建立使用者,使用者建立實際就是在BSN中為使用者生成一個私鑰並進行託管的過程,後續該使用者發交易時,就可以使用託管私鑰來簽名交易。

呼叫交易介面okTrans

我們傳入已建立的userId和數目8888,按照下圖所示發至閘道器,正常情況會收到交易回執。如需查詢交易是否生效,可呼叫okGet介面查詢合約交易是否執行成功。

呼叫查詢介面okGet

呼叫okGet介面,傳入userId後正常會返回一個處理成功回執,並將函式返回值返回在queryInfo。本示例中返回值為8988,而非之前建立時的8888,是因為已經呼叫過一次介面,數值發生了變化。

小結

今天主要跟大家分享瞭如何在BSN上建立區塊鏈應用的技巧,包括如何修改配置、連線BSN閘道器,例項演示瞭如何呼叫區塊鏈的塊高介面和合約介面等。開發者也可前往BSN門戶體驗建立基於FISCO BCOS的應用。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;