百度超级链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;@PostConstructpublic 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 {@Autowiredprivate 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.mzph.cn/news/122205.shtml

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

相关文章

mongodb数据迁移的方法

这个方法只能将数据从一个mongo数据库转移到另一个mongo数据库 这个命令可以备份mongo数据&#xff08;mongo数据库中的数据备份转换为文件&#xff09; mongodump --host HOST --port PORT --username USERNAME --password PASSWORD --db DB -c COLLECTION --out OUT这个命令…

Flutter的The file name ‘xxxx.dart‘ isn‘t a snake_case identifier警告

文章目录 警告原因分析解决方法dart的一些命名规则变量和函数命名&#xff1a;类和类型命名&#xff1a;常量和枚举&#xff1a;文件命名&#xff1a;包命名&#xff1a;注释&#xff1a;命名一致性&#xff1a;避免缩写&#xff1a;可搜索的命名&#xff1a; 一些好习惯 警告 …

C++不能在子类中构造函数的初始化成员列表中直接初始化基类成员变量

在C中&#xff0c;派生类的构造函数可以调用基类的构造函数来初始化基类的成员变量。但是无法在派生类的构造函数的初始化列表中直接初始化基类的成员变量。 如果那样做&#xff0c;会报错&#xff1a;xx不是类xx的非静态成员或基类 例子 class StatusBase{ public:~StatusBas…

[已解决]安装的明明是pytorch-gpu,但是condalist却显示cpu版本,而且torch.cuda.is_available 也是flase

问题; 安装了gpu版本的pytorch&#xff0c;但是显示的torch.cuda.is_available(&#xff09;却是flase。 conda list查看 版本显示只有cpuonly 在网上找了半天&#xff0c;也没有解决办法。 仔细看了一下&#xff0c;发现&#xff0c;有个单独的包叫cpuonly&#xff0c;不知道…

33基于MATLAB的对RGB图像实现中值滤波,均值滤波,维纳滤波。程序已通过调试,可直接运行。

基于MATLAB的对RGB图像实现中值滤波&#xff0c;均值滤波&#xff0c;维纳滤波。程序已通过调试&#xff0c;可直接运行。 33 MATLAB、图像处理、维纳滤波 (xiaohongshu.com)

linux入门---多线程的控制

目录标题 线程库pthread_create如何一次性创建多个线程线程的终止线程的等待线程取消分离线程如何看待其他语言支持的多线程线程id的本质线程的局部存储线程的封装 线程库 要想控制线程就得使用原生线程库也可以将其称为pthread库&#xff0c;这个库是遵守posix标准的&#xf…

小美的修路(最小生成树练习)

本题链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 题目&#xff1a; 样例&#xff1a; 输入 3 4 1 2 3 1 1 2 2 0 1 3 1 0 2 3 3 0 输出 2 1 3 思路&#xff1a; 由题意&#xff0c;这里建造的城市需要修路&#xff0c;且每个城市之间可以联通&#xff0c;且 是 1 …

Nautilus Chain 联合香港数码港举办 BIG DEMO DAY活动,释放何信号?

在今年的 10 月 26 日 9:30-18:30 GMT8 期间&#xff0c;Nautilus Chain 联合香港数码港共同举办了 “BIG DEMO DAY” Web3 项目路演活动&#xff0c;包括Xwinner、Sleek、Tx、All weather、Coral Finance、DBOE、PARSIQ、Hookfi、Parallels、Fintestra 以及 dot.GAMING 等在内…

异步请求池——池式组件

前言 本文详细介绍异步请求池的实现过程&#xff0c;并使用DNS服务来测试异步请求池的性能。            两个必须牢记心中的概念&#xff1a; 同步&#xff1a;检测IO 与 读写IO 在同一个流程里异步&#xff1a;检测IO 与 读写IO 不在同一个流程 同步请求 与 异步请求…

JDBC对数据库进行操作

一.使用JDBC查询数据库表t_user的所有数据 1.User表 名称 数据类型 主键 是否为空 说明 ID number 是 用户编号 NAME Varchar2(50) 用户名 AGE varchar2(5) 用户年龄 BIRTH date 用户生日 PWD varchar2(20) 否 用户密码 import java.sql.Connection; import java.sql.Date; …

【springboot单元测试,集成测试】

本文介绍一下SpringBoot中的测试方法 集成测试 SpringBootTest 一个普通的web api RequestMapping RestController public class HelloController {AutowiredRestTemplate restTemplate;GetMapping(value "/api/hi")public Map<String,Object> hello() {S…

服务运营 |论文解读: 住院病人“溢出”:一种近似动态规划方法

摘要 在住院床位管理中&#xff0c;医院通常会将住院病人分配到相对应的专科病房&#xff0c;但随着病人的入院和出院&#xff0c;可能会出现病人所需的专科病房满员&#xff0c;而其他病房却有空余床位的情况。于是就有了 "溢出 "策略&#xff0c;即当病人等候时间…

微服务-Feign

文章目录 Feign介绍Feign的基本使用自定义Feign的配置Feign性能优化Feign最佳实践 Feign介绍 RestTemplate远程调用存在的问题&#xff1a;代码可读性差&#xff0c;java代码中夹杂url&#xff1b;参数复杂很难维护 String url "http://userservice/user/" order.g…

Elasticsearch打分机制

一 例子 xx搜索引擎,就搜索结果本身而言,xx返回了正确的结果。因为返回的结果中,都包含了搜索的关键字。而我们从逻辑上来看,这一堆广告算是咋回事!这个吐槽是从用户的角度出发的。很显然,返回的结果中,尤其是前几条,有时甚至是前几页,都跟我们想要的结果相差深远! …

CSP-J 2023 T3 一元二次方程 解题报告

CSP-J 2023 T3 一元二次方程 解题报告 Link 前言 今年 C S P CSP CSP的原题, 回家 1 h 1h 1h内写 A C AC AC, 但是考场上没有写出来 , 原因是脑子太不好了, 竟然调了两个小时没有调出来. 一等奖悬那… 正题 看完题目,第一眼就是大模拟, 并且 C C F CCF CCF绝对不会让你好受…

JKPacket权威指南——学习建议

初学者 1&#xff0c;了解基本的swift语法&#xff0c;如果还没有从OC转swift的开发者建议尽早转swift了。 2&#xff0c;只需要下载源码并运行源码中demo&#xff0c;并阅读下具体使用的demo代码即可简单使用。 资深大佬 1&#xff0c;需要储备一定的rxswift相关知识&#…

ResNet(CVPR2016)

文章目录 AbstractIntroductionRelated WorkResidual RepresentationsShortcut Connections Deep Residual LearningResidual LearningIdentity Mapping by Shortcuts ExperimentConclusion 原文链接 Abstract 深层的神经网络更难训练&#xff0c;我们提出了一个残差学习框架&…

Day2-数组第二部分、双指针|LeetCode27、209、977、59|代码随想录

阅前声明&#xff1a;本人java基础不好&#xff0c;以后写的时候会加上一些java语法需要注意的地方&#xff0c;如果问题还请多多交流指正&#xff01; 数组第二部分主要是针对双指针思想展开的。 双指针思想 设置两个指针&#xff0c;fast指针用来指向新数组的内容&#xff…

怎么突破反爬虫机制

在当今的数字化时代&#xff0c;网络爬虫已经成为了收集信息和数据的重要工具。然而&#xff0c;许多网站和平台都配备了反爬虫机制&#xff0c;以防止恶意攻击和过度访问。对于普通用户来说&#xff0c;如何突破这些反爬虫机制呢&#xff1f;本文将为你提供一些实用的技巧和建…

Nginx的进程结构实例演示

可以参考《Ubuntu 20.04使用源码安装nginx 1.14.0》安装nginx 1.14.0。 nginx.conf文件中worker_processes 2;这条语句表明启动两个worker进程。 sudo /nginx/sbin/nginx -c /nginx/conf/nginx.conf开启nginx。 ps -ef | grep nginx看一下进程情况。 sudo /nginx/sbin/ng…