中移链(基于EOS)DDC-SDK实战-如何集成中移链DDC-SDK

404 阅读6分钟

本文档是关于中移链 DDC-SDK 实战,即如何集成基于 EOS 的中移链 DDC-SDK 的操作指南,适用于 BSN 开放联盟链--中移链 DDC-SDK 开发者,帮助读者了解如何以平台方的角色集成中移链 DDC-SDK。

前言

2021年10月,中移(动)信息技术有限公司(以下统称“ 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文档参考:

developers.eos.io/manuals/eos…

4.4 密钥模式:在上传公钥模式下,用户自己管理密钥,完全按照API文档发起交易。

4.5 网关地址规则

RPC访问地址:网关地址/api/[项目id]/rpc;其中网关地址:opbningxia.bsngate.com:18602;

如果使用项目key接入,需按照网关地址/api/[项目id]/[Protocol]格式拼接请求地址,同时请求报文头header中增加x-api-key:{项目key值};

项目id:创建项目后生成的项目ID,见下图:

也可以从项目管理->操作->下载接入参数获取。

二、引入DDC-SDK依赖包

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

1.

2. com.bsn.eos

3. bsn-eos-sdk

4. 1.0.20220602

5. system

6. ${project.basedir}/lib/bsn-eos-sdk-1.0.20220602.jar****

7.

2.引入EOS官方java-sdk以及相关依赖包

1.

2.

3. org.bouncycastle

4. bcprov-jdk15on

5. 1.69

6.

7.

8. org.bouncycastle

9. bcpkix-jdk15on

10. 1.69

11.

13.

14. one.block

15. eosiojava

16. 1.0.0

17.

18.

19. org.slf4j

20. slf4j-jdk14

21.

22.

23.

24.

25. one.block

26. eosio-java-rpc-provider

27. 1.0.0

28.

30.

31. com.alibaba

32. fastjson

33. 1.2.79

34.

35.

36. com.fasterxml.jackson.core

37. jackson-databind

38. 2.13.0

39.

40.

41. com.squareup.okhttp3

42. okhttp

43. 3.12.0

44.

45.

46. com.squareup.okhttp3

47. logging-interceptor

48. 3.12.0

49.

50.

51. com.squareup.retrofit2

52. converter-scalars

53. 2.5.0

54.

55.

56. com.squareup.retrofit2

57. retrofit

58. 2.5.0

59.

60.

61. com.squareup.retrofit2

62. converter-jackson

63. 2.5.0

64.

66.

67. org.projectlombok

68. lombok

69. 1.18.24

70. compile

71.

72.

73. io.jafka

74. jeos

75. 0.9.15

76.

77.

78. org.slf4j

79. slf4j-reload4j

80.

81.

82.

83.

三、初始化平台方配置

1.初始化参数配置

初始化com.bsn.eos.chain.ChainConfig 类中的三个参数:gatewayUrl、ddcContractAndAccount、pk,完成EOS链访问地址、DDC合约账户名、平台方账户私钥的配置。其中,中移链的gatewayUrl为opbningxia.bsngate.com:18602/api/\[项目id\…

2.初始化代码示例

1.//设置EOS链访问地址

2.ChainConfig.setGatewayUrl("opbningxia.bsngate.com:18602/api/58f79d4…");

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, "bitnodes.io/226");

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介绍:

bsnbase.com/static/tmpF…

中移链(基于EOS)操作说明:

bsnbase.com/static/tmpF…

中移链(基于EOS)网关接入说明:

bsnbase.com/static/tmpF…