• 百度超级链XuperChain使用JavaSDK接入


    环境 : ubuntu20
    xuperchain 5.3
    go 1.17
    springboot : 2.5.14

    前言

    请提前启动好xchain的节点,我选择简单启一个xchain节点作为测试,并且使用默认端口37101

    SpringBoot项目初始化

    我们先进行SpringBoot项目的配置进行讲解,这里有一个空的SpringBoot项目[这个项目目前只导入了SpringWeb依赖和hutool包]。
    在这里插入图片描述

    然后我们需要在项目的pom.xml里面导入xchain的sdk依赖包

    <dependency>
        <groupId>com.baidu.xupergroupId>
        <artifactId>xuper-java-sdkartifactId>
        <version>0.3.0version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    导入成功效果
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/ff4515c21a664057a85ec22d15b9d8e1.png

    配置xchain参数说明

    然后我们在application.properties文件进行编写相关xchain配置

    server.port=7070  # web服务的端口号
    
    xuperchain.keys=/src/main/resources/   # 节点管理员的私钥文件路径
    xuperchain.client.url=192.168.19.133:37101  # 节点的ip和端口
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    这个节点管理员的私钥我们选择存放在resources文件夹里面,并且需要命名为private.key
    在这里插入图片描述
    这个私钥我们在xuperchain项目的output/data/keys/private.key,使用其他多节点搭建的方式,管理员私钥文件也会存在节点的data/keys目录下

    配置 XchainConfig

    然后我们编写一个XchainConfig类,进行配置加载接入

    package com.yijiuyiyi.helloworld.config;
    
    
    import com.baidu.xuper.api.Account;
    import com.baidu.xuper.api.XuperClient;
    
    
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Configuration;
    
    import javax.annotation.PostConstruct;
    
    
    @Configuration
    public class XchainConfig {
    
    
        @Value("${xuperchain.client.url}")
        private String url;
    
        @Value("${xuperchain.keys}")
        private String key;
    
    
        XuperClient client;
    
        Account account;
    
        @PostConstruct
        public void initField() {
            client = new XuperClient(url);  // 创建客户端 
              String keyPath = System.getProperty("user.dir")+key;         //  由于Account.create()方法需要绝对路径,所以需要用此代码获取完整的路径
            account = Account.create(keyPath);
            System.out.println("path: "+keyPath);
            System.out.println("成功初始化");
        }
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    我们重启一下项目,如果不报错,证明配置加载成功
    在这里插入图片描述

    调用xchain的获取区块高度

    这里我们创建一个controller类,然后写一个get方法,方法里面是使用client去获取xchain的信息,我们这次去获取一个当前的区块高度

    package com.yijiuyiyi.helloworld.controller;
    
    
    import com.baidu.xuper.api.XuperClient;
    import com.baidu.xuper.pb.XchainOuterClass;
    import com.yijiuyiyi.helloworld.config.XchainConfig;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    import java.util.HashMap;
    import java.util.Map;
    
    @RestController
    public class BlockController {
        @Autowired
        private XchainConfig xchainConfig;
    
        @GetMapping("/getBlockHeight")
        public Map<String, Object> getBlockHeight(){
            XuperClient client = xchainConfig.getClient();
            XchainOuterClass.BCStatus bcs = client.getBlockchainStatus("xuper");
            XchainOuterClass.InternalBlock getBlocks = bcs.getBlock();
            long height = getBlocks.getHeight();
            Map<String,Object> map = new HashMap<>();
            map.put("height",height);
            return map;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    然后重启项目,使用postman进行测试此接口
    在这里插入图片描述
    成功获取区块高度

    结语

    这是简单的xchain对接springboot项目,接下来的篇章将介绍和使用xchain的javasdk包下的方法,进行部署合约,调用合约,查询合约等相关接口功能

  • 相关阅读:
    JAVA 之 Spring框架学习 1:Springの初体验 IOC DI
    深信服安全GPT 2.0升级,开启安全运营“智能驾驶”旅程
    从原理聊 JVM(五):JVM 的编译过程和优化手段
    .NET 托管vs非托管
    手摸手,带你实现移动端H5瀑布流布局
    爬虫----robots.txt 协议简介
    AndroidStudio打包报错记录(commons-logging,keystore password was incorrect)
    Lua语言编写爬虫程序
    libusb-win32使用问题
    C++信息学奥赛1168:大整数加法
  • 原文地址:https://blog.csdn.net/weixin_52865146/article/details/133201589