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

2023-11-03

本文档是关于中移链 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文档参考:

     https://developers.eos.io/manuals/eos/latest/nodeos/plugins/chain_api_plugin/api-reference/index    

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

4.5 网关地址规则

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

如果使用项目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为https://opbningxia.bsngate.com:18602/api/[项目id]/rpc,合约链账户ddcContractAndAccount为reddateddc22,平台方账户私钥pk为创建链账户所使用公钥对应的私钥。

2.初始化代码示例

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

2.ChainConfig.setGatewayUrl("https://opbningxia.bsngate.com:18602/api/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, "https://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介绍:

https://bsnbase.com/static/tmpFile/bzsc/bsn/1-1.html

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

https://bsnbase.com/static/tmpFile/bzsc/openper/7-2-4.html

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

https://bsnbase.com/static/tmpFile/bzsc/openper/7-3-6.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

中移链(基于EOS)DDC-SDK实战-如何集成中移链DDC-SDK 的相关文章

随机推荐

  • Maven报错无法解析插件

    某天本人创建好一个Maven项目写导入依赖的时候给我跳出一个错误 说一些Maven插件无法解析 虽说这是个小问题 但这个问题直接卡了一个小时的说 具体出错效果可以参考下图 注意哦 我这是在没网的情况下 有网的话maven会直接给你在中央仓库
  • 【LeetCode每日刷题】一行代码实现《2的幂》

    一 题目 给你一个整数 n 请你判断该整数是否是 2 的幂次方 如果是 返回 true 否则 返回 false 如果存在一个整数 x 使得 n 2x 则认为 n 是 2 的幂次方 输入 输入一个整数 输出 输出True或者False 二 例
  • matlab语音去除白噪声_基于的MATLAB的语音加噪去噪处理

    龙源期刊网 http www qikan com cn 基于的 MATLAB 的语音加噪去噪处理 作者 张大林 何威 李瑶瑶 来源 中国科技博览 2019 年第 01 期 摘 要 语音是语言的声学表现 是人类交流信息最自然 最有效 最方便的
  • 【SpringCloud】Spring cloud Alibaba Sentinel 降级规则

    文章目录 1 概述 2 服务降级 2 1 RT 2 2 异常比例 2 3 异常数 1 概述 本章是接着上一章讲解 SpringCloud Spring cloud Alibaba Sentinel 服务降级 阿里版本Hystrix 2 服务
  • 寻找URL、域名、网站名对应区别和组合关系

    URL URL由三部分组成 资源类型 存放资源的主机域名 资源文件名 也可认为由4部分组成 协议 主机 端口 路径 例如 百度一下 你就知道 http 协议 www 服务器 baidu com 域名 表示根目录 也就是平常我们文件夹的D 是
  • 傅里叶变换回顾与总结

    傅里叶变换回顾与总结对傅里叶变换进行回顾总结 遗忘 要用的时候回顾此浓缩版即可 内容来源于不同出处 函数名称 符号使用不是十分统一 一维二维表达同时存在 略表歉意 1 两个前提线性性 两个信号加权和输出为它们分别输出和的加权 权值为标量 时
  • openwrt无线中继WIFI的设置--WR703N

    主要是配置两个文件 一 vi etc config wireless 在 option disabled 1 这一行下面加入OpenWRT连接WIFI的配置 内容如下 config wifi iface wlan0 option devic
  • QGIS之十四连接PostGIS数据库

    背景 有时候我们需要用到qgis来连接PostGIS数据库进行一些可视化或者空间分析的操作 那我们来了解QGIS如何连接PostGIS数据库 步骤 1 新建连接 在qgis的浏览器窗口中找到PostGIS 右键新建连接 2 输入数据库参数
  • 埋点的机制

    埋点事件 所谓埋点事件 就是埋点需要采集的活动 activity 埋点一般会获取三种事件 曝光事件 页面停留事件 点击事件 曝光事件 主要记录页面被用户浏览次数 上报机制 用户成功进入一个页面时记录一次曝光事件 刷新一次页面也会上报一次 如
  • 使用R语言进行回归诊断

    人们提出所谓回归诊断的问题 其主要内容有 关于误差项是否满足 独立性 等方差性 正态性 选择线性模型是否合适 是否存在异常样本 回归分析的结果是否对某些样本依赖过重 也就是回归模型是否具有稳定性 自变量之间是否存在高度相关 即是否存在多重共
  • MySQL数据库增删改查

    前言 MySQL准确来说是一款开源关系型数据库管理系统 支持多种数据库类型 包括整型 字符型 日期 时间型等 它还支持BLOB 二进制大对象 和文本类型 使得存储各种类型的数据变得更加便捷 平时工作中主要操作无非是增删改查 本文将通过Nav
  • c++学习之虚析构和纯虚析构

    1 多态使用时 如果子类中有属性开辟到堆区 那么父类指针在释放时无法调用子类的析构代码 解决方法 将父类中的析构函数改为虚析构或者是纯虚析构 2 虚析构和纯虚析构共性 1 都可以解决父类指针无法释放子类对象的问题 2 都需要有具体的函数实现
  • vue.js水平时间轴_用Vue.js制作的简单水平时间轴组件

    vue js水平时间轴 Vue水平时间线 Vue Horizontal Timeline a simple horizontal timeline component made with Vue js 一个由Vue js制作的简单水平时间轴
  • happens-before原则与内存屏障

    1 happens before原则定义 编译器和处理器会对我们程序优化而进行指令重排 但需要保证前一个操作结果对后一个依赖操作可见 其实只是在单线程下能保证 否则就禁止指令重排 1 1 指令重排带来的问题 虽然指令重排满足happens
  • Angular 1.0 入门指南

    Angular 1 0 入门指南 1 angular 1 0 特点 数据双向绑定MVVM 隔离作用域 2 Angular 的作用域 scope scope rootScope 先来看一下 angular 的一般使用格式 作用域定义 模块注入
  • 解析最全的 Aspose.Words功能介绍,看这篇就够了

    Aspose Words 为用户提供了广泛的功能 用户可以执行大量与文档相关的任务 从简单地将文档从一种受支持的格式转换为另一种格式并在转换过程中修改这些文档到业务任务 例如创建结构化和视觉上吸引人的文档或自动报告 现代文档格式和标准很复杂
  • nslookup DNS 域名解析 故障排除

    nslookup是一个可以监测DNS服务器是否正常运行 且是否能正确解析域名的工具 参考文章 http www t086 com article 5138 常用方法 nslookup 某一域名A 服务器 正在工作的DNS服务器主机名 Add
  • 如何使用Jar命令将指定文件夹打包成Jar包

    一 场景描述 通常我们在进行项目开发的时候都会使用很多第三方封装的依赖 那么有时候团队内部也会编写一些工具类需要打包成Jar包供其他团队或项目使用 本文主要介绍如果使用jar命令打包指定文件夹下的文件 生成非可执行Jar包 二 Jar命令
  • JavaWeb笔记——JDBC

    1 JDBC综述 在开发中我们使用的是java语言 那么势必要通过java语言操作数 据库中的数据 这就是接下来要学习的JDBC 一套标准接口 1 SQL语句是操作数据库的唯一手段 容易犯错误的几个认知 Navicat与MySQL的关系 前
  • 中移链(基于EOS)DDC-SDK实战-如何集成中移链DDC-SDK

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