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