中移鏈(基於EOS)DDC-SDK實戰 -如何整合中移鏈DDC-SDK
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 中移鏈Java-SDK實戰使用Java
- 中移鏈(基於EOS)實戰:如何呼叫RPC介面組裝交易、簽名、上鍊以及查詢上鍊結果RPC
- 中移鏈助力“甬鏈”探索區塊鏈基礎設施建設的先行經驗區塊鏈
- 中移鏈已在BSN-DDC基礎網路上線元交易功能
- 中移鏈結合CA證書實現節點准入控制
- BSN開放聯盟鏈“中移鏈”瀏覽器2.0正式釋出!瀏覽器
- 中移鏈系統合約管控功能介紹
- BSN開放聯盟鏈“中移鏈”2.0瀏覽器提供了哪些新特性?瀏覽器
- 如何在PHP中實現鏈式方法呼叫PHP
- 中移鏈DDC獲獎,全面佈局數字化轉型業務
- 中移鏈合約常用開發介紹(四)工程樹目錄
- 中移鏈合約常用開發介紹 (一)開發基本流程
- 中移鏈合約常用開發介紹 (二)多索引表的使用索引
- 中移鏈控制檯對接4A平臺功能驗證介紹
- 如何在PHP中實現鏈式方法呼叫薦PHP
- SpringBoot整合FastDFS+Nginx整合基於Token的防盜鏈Spring BootASTNginx
- 區塊鏈中的“跨鏈”區塊鏈
- 行遷移(鏈化行)問題
- 歐鏈·寧話區塊鏈第8集《EOS超級節點訪談:EOS Store 下》區塊鏈
- 在Laravel中整合騰訊雲 移動(APP)推送(TPNS)LaravelAPP
- EOS 區塊鏈資料實時異構到 MongoDB區塊鏈MongoDB
- EOS 區塊鏈資料實時異構到 MySQL區塊鏈MySql
- 在 iOS 中實現方法鏈呼叫iOS
- 在 iOS 中實現區塊鏈iOS區塊鏈
- 如何在移動應用中實現AI畫圖?AI
- 如何在 UE4 移動端中實現 HZB?
- 如何在移動應用中整合美顏SDK實現人臉識別和美化功能
- 區塊鏈社交APP如何在移動社交時代脫穎而出區塊鏈APP
- 探索如何在武漢鏈(基於ETH)的一個合約中實現同質化與非同質化功能
- 中移鏈合約常用開發介紹(三)工程化開發智慧合約
- 中關於虛擬機器複製與遷移(中)虛擬機
- 【劉文彬】區塊鏈3.0:擁抱EOS區塊鏈
- 構建 EOS 區塊鏈瀏覽器區塊鏈瀏覽器
- 區塊鏈EOS到底是什麼?區塊鏈
- 在 Linux 中如何移動檔案Linux
- java過濾器中如何轉移地址?Java過濾器
- 基於Ethereum & IPFS的去中心化Ebay區塊鏈專案開發實戰中心化區塊鏈
- 實現基於React的移動端Swiper元件React元件