中移鏈(基於EOS)DDC-SDK實戰​ -如何整合中移鏈DDC-SDK​

BSN研習社發表於2022-06-24



  IT   公司 ”)與   BSN   開展合作   BSN   搭建   BSN-DDC   基礎網路, IT   公司區塊鏈團隊自主研發基於   EOS   中移鏈   DDC,面向存在   DDC   業務需求的各行業客戶提供接入服務,使其可便捷管理   DDC   操作,從而靈活升級產品模式,助力客戶業務創新。

本文件是 關於 中移鏈   DDC-SDK   實戰 如何整合基於   EOS   中移鏈   DDC-SDK   的操作指南 適用於   BSN   開放聯盟鏈 --中移鏈   DDC-SDK   開發者 幫助 讀者瞭解如何以平臺方的角色整合中移鏈   DDC-SDK。


 

一、 中移鏈(基於 EOS)操作說明

1.  建立鏈賬戶

1.1 進入【鏈賬戶管理】模組,點選【建立鏈賬戶】按鈕;

 

1.2   在鏈賬戶模組中點選建立鏈賬戶進入新增頁面。頁面中輸入鏈賬戶名稱,開放鏈框架下拉中選擇中移鏈,鏈賬戶型別只支援上傳公鑰模式;

注意:鏈賬戶名稱是 12個字元,只能包括【12345和26個字母】。其中必須以字母開頭,並且鏈賬戶名稱唯一。完成建立後,該鏈賬戶只可用於訪問所選開放鏈框架且不可修改。

 

1.3 使用者點選【建立】按鈕,進入證照模式頁中,輸入公鑰、測試資料及簽名資料。測試通過後,點選【確認建立】完成鏈賬戶建立;

注意:此時建立的鏈賬戶就是平臺方鏈賬戶,上傳公鑰所對應的私鑰就是平臺方私鑰,後續初始化配置需要使用。

 


 

2.  分配資源

2.1   在鏈賬戶列表中的操作列點選【分配資源】後,系統開啟資源分配視窗。

 

2.2   資源分配視窗,使用者選擇資源有效期、輸入資源購買容量,系統自動計算出支付金額。點選【確認分配】按鈕,彈出確認分配提示並點選【確定】按鈕完成鏈賬戶資源分配;

 

注意:資源用於鏈上交易,分配後不支援退款。鏈上交易處理過程中,從鏈賬戶中扣除資源時,鏈賬戶上必須同時有 NET、CPU和RAM,三種資源缺一不可。CPU/NET購買後,資源使用有時間限制,RAM購買後無時間限制。使用者購買CPU/NET後,若在有效期內,資源使用累加超過購買額度,需重新分配資源,否則過期則會清空資源。


 

3.  建立專案

3.1   進入【專案管理】模組,點選【建立專案】按鈕。

 

3.2、 在建立專案頁面中輸入【專案名稱】,【開放鏈框架】下拉中選擇【中移鏈】即可完成建立;

注意:專案建立完成後不允許修改開放鏈框架。

 

4.  閘道器接入說明

4.1   金鑰演算法:中移鏈(基於 EOS)通過ECDSA(secp256k1)演算法生成公私鑰。

4.2   Chain ID: 9b4c6015f8b73b2d7ee3ebd92d249a1aba06a614e9990dcf54f7cf2e3d5172e1。

4.3   接入方式:中移鏈(基於 EOS)目前支援 JSON-RPC API 方式接入; API文件參考: https://developers.eos.io/manuals/eos/latest/nodeos/plugins/chain_api_plugin/api-reference/index

4.4   金鑰模式:在上傳公鑰模式下,使用者自己管理金鑰,完全按照 API文件發起交易。

4.5   閘道器地址規則

RPC訪問地址:閘道器地址/api/[專案id]/rpc;其中閘道器地址:

如果使用專案 key接入,需按照閘道器地址/api/[專案id]/[Protocol]格式拼接請求地址,同時請求報文頭header中增加x-api-key:{專案key值};

專案 id:建立專案後生成的專案ID,見下圖:

 

也可以從專案管理 ->操作->下載接入引數獲取。

 


 

二、 引入 DDC-SDK依賴包

1.  引入 bsn-eos-sdk的jar包

1.  <dependency>   

2.       <groupId> com.bsn.eos </groupId>   

3.       <artifactId> bsn-eos-sdk </artifactId>   

4.       <version> 1.0.20220602 </version>   

5.       <scope> system </scope>   

6.       <systemPath> ${project.basedir}/lib/bsn-eos-sdk-1.0.20220602.jar </systemPath>   

7.  </dependency>   

2.  引入 EOS官方java-sdk以及相關依賴包

1.  <dependencies>   

2.       <dependency>   

3.           <groupId> org.bouncycastle </groupId>   

4.           <artifactId> bcprov-jdk15on </artifactId>   

5.           <version> 1.69 </version>   

6.       </dependency>   

7.       <dependency>   

8.           <groupId> org.bouncycastle </groupId>   

9.           <artifactId> bcpkix-jdk15on </artifactId>   

10.           <version> 1.69 </version>   

11.       </dependency>   

12.    

13.       <dependency>   

14.           <groupId> one.block </groupId>   

15.           <artifactId> eosiojava </artifactId>   

16.           <version> 1.0.0 </version>   

17.           <exclusions>   

18.               <exclusion>   

19.                   <groupId> org.slf4j </groupId>   

20.                   <artifactId> slf4j-jdk14 </artifactId>   

21.               </exclusion>   

22.           </exclusions>   

23.       </dependency>   

24.       <dependency>   

25.           <groupId> one.block </groupId>   

26.           <artifactId> eosio-java-rpc-provider </artifactId>   

27.           <version> 1.0.0 </version>   

28.       </dependency>   

29.    

30.       <dependency>   

31.           <groupId> com.alibaba </groupId>   

32.           <artifactId> fastjson </artifactId>   

33.           <version> 1.2.79 </version>   

34.       </dependency>   

35.       <dependency>   

36.           <groupId> com.fasterxml.jackson.core </groupId>   

37.           <artifactId> jackson-databind </artifactId>   

38.           <version> 2.13.0 </version>   

39.       </dependency>   

40.       <dependency>   

41.           <groupId> com.squareup.okhttp3 </groupId>   

42.           <artifactId> okhttp </artifactId>   

43.           <version> 3.12.0 </version>   

44.       </dependency>   

45.       <dependency>   

46.           <groupId> com.squareup.okhttp3 </groupId>   

47.           <artifactId> logging-interceptor </artifactId>   

48.           <version> 3.12.0 </version>   

49.       </dependency>   

50.       <dependency>   

51.           <groupId> com.squareup.retrofit2 </groupId>   

52.           <artifactId> converter-scalars </artifactId>   

53.           <version> 2.5.0 </version>   

54.       </dependency>   

55.       <dependency>   

56.           <groupId> com.squareup.retrofit2 </groupId>   

57.           <artifactId> retrofit </artifactId>   

58.           <version> 2.5.0 </version>   

59.       </dependency>   

60.       <dependency>   

61.           <groupId> com.squareup.retrofit2 </groupId>   

62.           <artifactId> converter-jackson </artifactId>   

63.           <version> 2.5.0 </version>   

64.       </dependency>   

65.    

66.       <dependency>   

67.           <groupId> org.projectlombok </groupId>   

68.           <artifactId> lombok </artifactId>   

69.           <version> 1.18.24 </version>   

70.           <scope> compile </scope>   

71.       </dependency>   

72.       <dependency>   

73.           <groupId> io.jafka </groupId>   

74.           <artifactId> jeos </artifactId>   

75.           <version> 0.9.15 </version>   

76.           <exclusions>   

77.               <exclusion>   

78.                   <groupId> org.slf4j </groupId>   

79.                   <artifactId> slf4j-reload4j </artifactId>   

80.               </exclusion>   

81.           </exclusions>   

82.       </dependency>   

83.  </dependencies>   


三、 初始化平臺方配置

1.  初始化引數配置

初始化 com.bsn.eos.chain.ChainConfig 類中的三個引數:gatewayUrl、ddcContractAndAccount、pk,完成EOS鏈訪問地址、DDC合約賬戶名、平臺方賬戶私鑰的配置。其中,中移鏈的gatewayUrl為[專案id]/rpc,合約鏈賬戶ddcContractAndAccount為reddateddc22,平臺方賬戶私鑰pk為建立鏈賬戶所使用公鑰對應的私鑰。

2.  初始化程式碼示例

1.  //設定EOS鏈訪問地址   

2.  ChainConfig.setGatewayUrl( "58f79d4af7754e588fc2efd23bf7e7fc/rpc" );  

3.  //設定部署DDC合約的賬戶   

4.  ChainConfig.setDdcContractAndAccount( "reddateddc22" );  

5.  //設定平臺方賬戶私鑰   

6.  ChainConfig.setPk( "5Jj3bPpWtbJex5DGXCLjE8c5Gr9SudFRogkwXvd1KHGGa7ZWYS1" );  

四、 實現 API呼叫

1.  呼叫 DDC生成

1 .1功能介紹:

平臺方、終端使用者通過呼叫該方法進行 DDC的建立。

1 .2 API定義:

1 ) 方法定義: String   safeMint(String from, String to, String ddcURI);

2 ) EOS合約方法:ddc::mint_721(name sender, name to, uint64_t amount, std::string ddc_uri, std::string memo);

3 ) 呼叫者:平臺方、終端使用者,需設定呼叫者私鑰;

4 ) 核心邏輯:

①  檢查傳送方、接收者賬戶狀態是否可用;

②  檢查角色是否為平臺方或終端使用者;

③  檢查傳送方賬戶是否有呼叫許可權;

④  檢查傳送方賬戶與接受者賬戶是否屬於同平臺。

5 ) 輸入引數:

欄位名

欄位

型別

必傳

備註

傳送方賬戶

From

String


接收者賬戶

to

String


DDC資源識別符號

ddcURI

String


6 ) 輸出引數:

欄位名

欄位

型別

備註



String

交易   Hash

1 .3呼叫程式碼示例:

1.  @Test   

2.  public   void  mint721() {  

3.       //設定平臺方賬戶   

4.      String platformAccount =  "ddc.platform" ;  

5.      DDC721Service ddc721Service =  new  DDC721ServiceImpl();  

6.      String transactionId = ddc721Service.safeMint(platformAccount, platformAccount,  " );  

7.      System.out.println(transactionId);  

8.  }  

2.  呼叫查詢 DDC數量

2 .1功能介紹:

通過呼叫該方法查詢當前賬戶擁有的 DDC數量。

2 .2   API定義:

1 ) 方法定義: BigInteger balanceOf(String owner);

2)EOS合約方法:get_table_rows(name contract, name table, name account);

3)呼叫者:所有人;

4)核心邏輯:檢查擁有者賬戶狀態是否可用;

5)輸入引數:

欄位名

欄位

型別

必傳

備註

擁有者賬戶

owner

String


6) 輸出引數:

欄位名

欄位

型別

備註

DDC的數量

balance

BigInteger


2 .3   呼叫程式碼示例:

1.  @Test   

2.  public   void  balanceOf721() {  

3.       //設定平臺方賬戶   

4.      String platformAccount =  "ddc.platform" ;  

5.      DDC721Service ddc721Service =  new  DDC721ServiceImpl();  

6.      System.out.println(ddc721Service.balanceOf(platformAccount));  

7.  }  


五、 參考連結

BSN介紹:

中移鏈(基於 EOS)操作說明:

中移鏈(基於 EOS)閘道器接入說明:

 

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70012206/viewspace-2902724/,如需轉載,請註明出處,否則將追究法律責任。

相關文章