百度超级链XuperChain使用JavaSDK接入

news2024/9/25 17:15:56

环境 : 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包下的方法,进行部署合约,调用合约,查询合约等相关接口功能

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1142941.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安卓逆向之雷电模拟器中控

一, 雷电模拟器 安装使用 官方地址: https://www.ldmnq.com ,官方论坛 https://www.ldmnq.com/forum/ . 有一个多开管理器,还有就是设置手机的参数比较关键。 二,雷电模拟器开启面具,安装LSP。 设置root 权限。

搜索引擎搜索技巧总结

晚上在B站上刷到一个关于搜索技巧的干货视频&#xff0c;这个视频真的不错&#xff0c;结尾还提到了AI时代的搜索思路之前自己也零碎的探索出了一些搜索技巧&#xff0c;但是没有总结&#xff0c;就没法稳定的加入自己的工作流&#xff0c;持续提高效率受到这个视频的启发&…

线扫相机DALSA--分频倍频计算公式及原理

分频倍频计算公式及原理 推导原理&#xff1a; 假设编码器脉冲精度为P&#xff1b;同步轮/辊周长为C&#xff0c;Fov为视野&#xff0c;Res为线扫相机分辨率&#xff0c;N代表N倍频编码器&#xff0c;分频为D&#xff0c;倍频为M 线扫项目常规采用N&#xff08;N 4&#xff0…

化身全能战士:ChatGPT助我横扫办公室【文末送书两本】

化身全能战士&#xff1a;ChatGPT助我横扫办公室 半年签约 16 本书有 ChatGPT 不会的吗&#xff1f;解锁 ChatGPT 秘技&#xff0c;化身全能战士ChatGPT 基本知识办公自动化职场学习与变现 作者简介结语购买链接参与方式往期赠书回顾 &#x1f3d8;️&#x1f3d8;️个人简介&a…

用HTML+CSS+JS实现一个简单的弹幕滚动留言板

在线演示地址&#xff1a;https://www.ewbang.com/community/board.html 本文利用HTMLCSSJS写了一个简单的弹幕滚动留言板小功能。 <!DOCTYPE html> <html><head><meta http-equiv"content-type" content"text/html;charsetutf-8" /&…

shell实验

1&#xff0e;编写脚本for1.sh&#xff0c;使用for循环创建20账户&#xff0c;账户名前缀由用户从键盘输入&#xff0c;账户初始密码由用户输入&#xff0c;例如&#xff1a;test1、test2、test3、....、test10 编写脚本&#xff0c;使用read -p提醒用户从键盘输入账户名前缀以…

轻量封装WebGPU渲染系统示例<1>-彩色三角形(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/version-1.01/src/voxgpu/sample/VertColorTriangle.ts 此示例渲染系统实现的特性: 1. 用户态与系统态隔离。 2. 高频调用与低频调用隔离。 3. 面向用户的易用性封装。 4. 渲染数据和渲染机制分离。 …

FL Studio21最新中文版DAW数字音频工作站

大概从去年开始&#xff0c;“电子音乐制作技术”成为越来越常见的说法。一开始我们觉得这种说法太过于笼统&#xff0c;因为电子音乐制作的技术早已不限于用在电子音乐&#xff0c;它更像是现代音乐制作技术。毕竟现代化的90%的音乐都是这么做出来的。 对&#xff0c;我们说的…

如何使用 Rask AI 进行视频本地化

链接&#xff1a; Login or Sign up Rask AI 是一个提供视频本地化服务的平台&#xff0c;支持 60 多种语言。该服务的主要功能包括&#xff1a; VoiceClone&#xff1a;利用 AI 生成来自原始影片发言人的语音&#xff0c;让你可以将其用作全球范围内品牌形象的一部分。Mul…

如何做到在 5 分钟之内将应用大小减少 60% 的?

移动设备的资源总是有限的。有限的电量&#xff0c;有限的存储&#xff0c;有限的处理能力&#xff0c;有限的内存&#xff0c;有限的网络带宽……无论你面对的是 Android 还是 iOS&#xff0c;这都是真理。 在前几个月&#xff0c;我在开发一个安卓应用。当有人尝试用错误的密…

蓝桥杯 第 2 场算法双周赛 第3题 摆玩具【算法赛】 c++ 贪心

题目 摆玩具【算法赛】https://www.lanqiao.cn/problems/5888/learning/?contest_id145 问题描述 小蓝是一个热爱收集玩具的小伙子&#xff0c;他拥有 n 个不同的玩具。 这天&#xff0c;他把 n 个玩具按照高度顺序从矮到高摆放在了窗台上&#xff0c;然后&#xff0c;他希…

JetBrains ReSharper Ultimate 2023.2.2

JetBrains ReSharper Ultimate 国外知名软件公司JetBrains专为软件开发软件编程人员制作的各类应用工具箱&#xff0c;如&#xff1b;PHP集成开发工具PHPStorm&#xff0c;Java整合开发工具IntelliJ IDEA&#xff0c;Python集成开发工具PyCharm&#xff0c;HTML/CSS/JS开发工具…

conda虚拟环境笔记收录

1、安装conda 增加执行权限&#xff1a; chmod x Anaconda3-2023.03-1-Linux-x86_64.sh 开始执行&#xff1a;./Anaconda3-2023.03-1-Linux-x86_64.sh2、查看版本 conda --version3、查看当前虚拟环境 虚拟环境和全局环境有前缀可见 如果不进行设置&#xff0c;重新启动就变成…

hdlbits系列verilog解答(移位寄存器)-23

文章目录 一、问题描述二、verilog源码三、仿真结果 一、问题描述 您将获得一个具有两个输入和一个输出的模块 my_dff &#xff08;实现 D 触发器&#xff09;。实例化其中的三个&#xff0c;然后将它们链接在一起以形成长度为 3 的移位寄存器。端口 clk 需要连接到所有实例。…

uniapp 在 Android Studio 模拟器中运行项目

在开发App时&#xff0c;无论是使用 Flutter 还是 React native&#xff0c;还是使用uni-app 开发跨端App时&#xff0c;总是需要运行调试。一般调试分为两种。 第一&#xff1a;真机调试 第二&#xff1a;模拟器调试 真机调试的好处是可以看到更好的效果&#xff0c;缺点就是…

2023年中国冷风机分类、销量及市场规模分析[图]

冷风机通常是指一种设备&#xff0c;用于通过冷却空气来调节室内或工业环境的温度。这些设备通过循环空气并通过冷却元件&#xff08;如冷却盘或冷凝器&#xff09;来降低空气的温度&#xff0c;从而实现温度控制。冷风机在家庭、商业和工业领域都有广泛的应用&#xff0c;可以…

Linux Mint 21.2 “EDGE” ISO 发布

Linux Mint 团队近日宣布发布最新 Linux Mint 21.2 “Victoria “版本的 “EDGE “ISO 版本&#xff0c;并提供下载。 “这个镜像是为那些硬件太新而无法启动 Linux Mint 21.x 中包含的 5.15 LTS 内核的用户制作的。 Linux Mint 21.2 “Victoria “于2023年7月中旬发布&#x…

【开源】基于SpringBoot的城市桥梁道路管理系统的设计和实现

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询城市桥梁4.2 新增城市桥梁4.3 编辑城市桥梁4.4 删除城市桥梁4.5 查询单个城市桥梁 五、免责说明 一、摘要 1.1 项目介绍 基于VueSpringBootMySQL的城市桥梁道路管理系统&#xff0c;支持…

JAVA实现智能停车场管理系统 开源

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容A. 车主端功能B. 停车工作人员功能C. 系统管理员功能1. 停车位模块2. 车辆模块3. 停车记录模块4. IC卡模块5. IC卡挂失模块 三、界面展示3.1 登录注册3.2 车辆模块3.3 停车位模块3.4 停车数据模块3.5 IC卡档案模块3.6 IC卡挂…

了解RAID5和RAID6的区别,让数据存储更安全

RAID&#xff08;Redundant array of inexpensive disk&#xff09;通过给磁盘阵列增加冗余磁盘提高了磁盘阵列的可靠性。 所谓冗余磁盘&#xff0c;即该磁盘不用于存放实际数据&#xff0c;而用来存放一些冗余信息&#xff0c;而这些冗余信息可用来在必要的时候进行有效数据恢…