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


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

  • 相关阅读:
    【LeetCode-102】二叉树的层序遍历
    LwIP介绍
    Socks5代理与网络安全:保护隐私、绕过限制与爬虫应用
    110.42.7.1ping IP延迟代表什么意思,自己延迟高会表示其他人也高延迟吗?
    mysql基础整理
    论文总结5 基于Kmeans聚类的XGBoost集成算法研究
    打车出行小程序APP定制开发代驾拼车专车
    工业互联网资料整理合集二
    webrtc vp8/9视频编解码介绍
    jdk中bin目录详解
  • 原文地址:https://blog.csdn.net/BSN_yanxishe/article/details/125457205