百度超级链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.xuper</groupId>
    <artifactId>xuper-java-sdk</artifactId>
    <version>0.3.0</version>
</dependency>

导入成功效果
![在这里插入图片描述](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和端口

这个节点管理员的私钥我们选择存放在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("成功初始化");
    }

}

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

调用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;
    }
}

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

结语

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

猜你喜欢

转载自blog.csdn.net/weixin_52865146/article/details/133201589