fiscobcos 3.x linux安装与java简单调用

news2024/12/25 8:54:29

所用环境

vmware 16 Pro
centos7.6

jdk11.0.6

ideal 2022

1、安装fiscobcos

# 创建操作目录
 

# cd ~ && mkdir -p fisco && cd fisco

# 下载建链脚本

# curl -#LO https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v3.6.0/build_chain.sh && chmod u+x build_chain.sh

# Note: 若访问git网速太慢,可尝试如下命令下载建链脚本:

# curl -#LO https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/FISCO-BCOS/releases/v3.6.0/build_chain.sh && chmod u+x build_chain.sh

修改build_chain.sh

# vim build_chain.sh

 在fisco目录下执行下面的指令,生成一条单群组4节点的FISCO链:

# bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200

如果出现 

使用

# sudo yum install wget

 

 再次运行

# bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200

 启动所有节点

# bash nodes/127.0.0.1/start_all.sh


检查进程是否启动 

# ps aux |grep -v grep |grep fisco-bcos


查看每个节点的网络连接数目

以node0为例:

# tail -f nodes/127.0.0.1/node0/log/* |grep -i "heartBeat,connected count"

 ctrl+c退出

2、安装控制台 

查看jdk环境

# java -version

 

安装jdk

# mkdir jdk

自己安装我这用的jdk11

解压

tar -xzvf jdk-11.0.6_linux-x64_bin.tar.gz

配置

# vim /etc/profile

JAVA_HOME=/usr/local/jdk/jdk-11.0.6
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH

保存并退出然后 

# source /etc/profile

 查看jdk版本号

# java -version

下载控制台(需要翻墙)

# cd ~/fisco && curl -LO https://github.com/FISCO-BCOS/console/releases/download/v3.6.0/download_console.sh && bash download_console.sh

修改配置

拷贝控制台配置文件
 

# cp -n console/conf/config-example.toml console/conf/config.toml

配置控制台证书
 

# cp -r nodes/127.0.0.1/sdk/* console/conf

启动
 

# cd ~/fisco/console && bash start.sh

获取节点列表信息

 在控制台合约部署与查看

退出 quit

# 当前目录~/fisco/console

查看合约

# ls contracts/solidity

控制台编译

# bash contract2java.sh solidity -p org.com.fisco -s ./contracts/solidity/HelloWorld.sol

如果出现 

# sudo yum install bzip2

再次编译

# bash contract2java.sh solidity -p org.com.fisco -s ./contracts/solidity/HelloWorld.sol

 

查看生成的java代码

# ls /root/fisco/console/contracts/sdk/java/org/com/fisco

 3、安装webbase

1、下载安装包

# wget https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v3.1.1/webase-front.zip

2、解压

# unzip webase-front.zip && cd webase-front

如果出现 

 

就下载

# sudo yum install unzip

 再次运行

# unzip webase-front.zip && cd webase-front

 

3、拷贝sdk证书文件(build_chain的时候生成的)

将节点所在目录nodes/${ip}/sdk下的所有文件拷贝到当前conf目录,供SDK与节点建立连接时使用

 # cp -r /root/fisco/nodes/127.0.0.1/sdk/* ./conf/

4、修改配置 

# vi conf/application.yml

sdk:
  useSmSsl: false  # sdk连接节点是否使用国密ssl
  peers: ['127.0.0.1:20200','127.0.0.1:20201'] # 节点ip和rpc端口

 

 

5、检查与 运行

# bash stop.sh
# bash start.sh
# bash status.sh

1. 检查各子系统进程 

通过ps命令,检查节点与节点前置的进程是否存在

  • 包含:节点进程nodeXX,节点前置进程webase.front

检查方法如下,若无输出,则代表进程未启动,需要到webase-front/log中查看日志的错误信息,并根据错误提示或根据WeBASE-Front常见问题进行错误排查

检查节点进程

# ps -ef | grep node

 

 

检查节点前置webase-front的进程 

# ps -ef | grep webase.front

 2. 检查进程端口

通过netstat命令,检查节点与节点前置的端口监听情况

检查方法如下,若无输出,则代表进程端口监听异常,需要到webase-front/log中查看日志的错误信息,并根据错误提示或根据WeBASE-Front常见问题进行错误排查

 检查节点channel端口(默认为20200)是否已监听

# netstat -anlp | grep 20200

出现

 

运行进行安装

# sudo yum install net-tools

 再次运行

# netstat -anlp | grep 20200

 检查webase-front端口(默认为5002)是否已监听

# netstat -anlp | grep 5002

3. 检查服务日志 

日志中若出现报错信息,可根据信息提示判断服务是否异常,也可以参考并根据错误提示或根据WeBASE-Front常见问题进行错误排查

  • 如果节点进程已启用且端口已监听,可跳过本章节
  • 如果节点前置异常,如检查不到进程或端口监听,则需要webase-front/log中查看日志的错误信息
  • 如果检查步骤出现检查不到进程或端口监听等异常,或者前置服务无法访问,可以按以下顺序逐步检查日志:
    • 检查webase-front/log中查看节点前置日志的错误信息,如果无错误,且日志最后出现application run success字样则代表运行成功
    • 检查nodes/127.0.0.1/nodeXXX/log中的节点日志

查看运行成功日志:webase-front运行成功后会打印日志main run success,可以通过搜索此关键字来确认服务正常运行。

如,检查webase-front日志,其他webase服务可进行类似操作

# cd webase-front
# grep -B 3 "main run success" log/WeBASE-Front.log

 

6、访问

 

http://${你的ip}:5002/WeBASE-Front 

4、账户的创建 与使用

国密生成账户脚本get_gm_account.sh与非国密get_account.sh选项和使用方式一致,请参考操作即可,不再赘述。

1、获取脚本

# curl -#LO https://raw.githubusercontent.com/FISCO-BCOS/console/master/tools/get_account.sh && chmod u+x get_account.sh && bash get_account.sh -h

如果出现

 

使用

# curl -#LO https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/FISCO-BCOS/tools/get_account.sh && chmod u+x get_account.sh && bash get_account.sh -h

 成功

国密版本请使用下面的指令获取脚本 

# curl -#LO https://raw.githubusercontent.com/FISCO-BCOS/console/master/tools/get_gm_account.sh && chmod u+x get_gm_account.sh && bash get_gm_account.sh -h

 失败就用

# curl -#LO https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/FISCO-BCOS/tools/get_gm_account.sh && chmod u+x get_gm_account.sh && bash get_gm_account.sh -h

2、使用脚本生成PEM格式私钥 

  • 生成私钥与地址

# bash get_account.sh

 

  • 指定PEM私钥文件计算账户地址

# bash get_account.sh -k accounts/0x47e4377540d90841dd8d5eb4a14c40473c742e9d.pem

3、使用脚本生成PKCS12格式私钥 

  • 生成私钥与地址

要设置一个密码我用root

# bash get_account.sh -p

 

  • 指定p12私钥文件计算账户地址,按提示输入p12文件密码

# bash get_account.sh -P accounts/0x2d6319c1c3043d0fb76facfa9276095619940e69.p12

 

5、账户的存储

  • Java SDK支持通过私钥字符串或者文件加载,所以账户的私钥可以存储在数据库中或者本地文件。

  • 本地文件支持两种存储格式,其中PKCS12加密存储,而PEM格式明文存储。

  • 开发业务时可以根据实际业务场景选择私钥的存储管理方式。

6、账户的使用

控制台加载私钥文件

控制台提供账户生成脚本get_account.sh,生成的的账户私钥文件在accounts目录下,控制台加载私钥时需要指定私钥文件。 控制台启动方式有如下几种:

bash start.sh
bash start.sh group0
bash start.sh group0 -pem pemName
bash start.sh group0 -p12 p12Name

控制台随机生成一个账户,使用控制台配置文件指定的群组号启动。

bash start.sh

 控制台随机生成一个账户,使用命令行指定的群组名启动。

bash start.sh group0
  • 注意:指定的群组在控制台配置文件中需要配置bean。

 使用PEM格式私钥文件启动

  • 使用指定的pem文件的账户启动,输入参数:群组号、-pem、pem文件路径

bash start.sh group0 -pem accounts/0xebb824a1122e587b17701ed2e512d8638dfb9c88.pem
使用PKCS12格式私钥文件启动
  • 使用指定的p12文件的账户,需要输入密码,输入参数:群组名、-p12、p12文件路径

 

bash start.sh group0 -p12 accounts/0x5ef4df1b156bc9f077ee992a283c2dbb0bf045c0.p12
Enter Export Password:

如果通过账户生成脚本get_accounts.sh生成了PEM或PKCS12格式的账户私钥文件,则可以通过加载PEM或PKCS12账户私钥文件使用账户。加载私钥有两个类:P12Manager和PEMManager,其中,P12Manager用于加载PKCS12格式的私钥文件,PEMManager用于加载PEM格式的私钥文件。

  • P12Manager用法举例:

使用代码加载私钥。

// 初始化BcosSDK
BcosSDK sdk =  BcosSDK.build(configFile);
// 为群组group0初始化client
Client client = sdk.getClient("group0");
// 通过client获取CryptoSuite对象
CryptoSuite cryptoSuite = client.getCryptoSuite();
// 加载pem账户文件
cryptoSuite.loadAccount("p12", p12AccountFilePath, password);

 

  • PEMManager使用举例

使用代码加载私钥。

// 初始化BcosSDK
BcosSDK sdk =  BcosSDK.build(configFile);
// 为群组group0初始化client
Client client = sdk.getClient("group0");
// 通过client获取CryptoSuite对象
CryptoSuite cryptoSuite = client.getCryptoSuite();
// 加载pem账户文件
cryptoSuite.loadAccount("pem", pemAccountFilePath, null);

账号目录这个后面java会用

 

7. 以太坊账号生成

生成ECDSA私钥

首先,我们使用OpenSSL生成椭圆曲线私钥,椭圆曲线的参数使用secp256k1。执行下面的命令,生成PEM格式的私钥并保存在ecprivkey.pem文件中。

# openssl ecparam -name secp256k1 -genkey -noout -out ecprivkey.pem

执行下面的指令,查看文件内容。

# cat ecprivkey.pem

接下来根据私钥计算公钥,执行下面的指令

# openssl ec -in ecprivkey.pem -text -noout 2>/dev/null| sed -n '7,11p' | tr -d ": \n" | awk '{print substr($0,3);}'

 根据公钥计算地址

下载ethereum-generate-wallet/lib/x86-64 at master · vkobel/ethereum-generate-wallet · GitHub 

 我将这个放入

 运行

# openssl ec -in ecprivkey.pem -text -noout 2>/dev/null| sed -n '7,11p' | tr -d ": \n" | awk '{print substr($0,3);}' | ./keccak-256sum -x -l | tr -d ' -'

 

运行改为可执行

# chmod +x keccak-256sum

 再次运行

# openssl ec -in ecprivkey.pem -text -noout 2>/dev/null| sed -n '7,11p' | tr -d ": \n" | awk '{print substr($0,3);}' | ./keccak-256sum -x -l | tr -d ' -'

 

5、java调用

1、springboot项目

项目结构

注意

 

 注意防火墙端口开放

 

# systemctl start firewalld 开启防火墙
# systemctl stop firewalld 关闭防火墙
# systemctl status firewalld 防火墙状态查看
# sudo firewall-cmd --zone=public --add-port=5001/tcp --permanent 防火墙端口放行
# sudo firewall-cmd --reload 防火墙更新
# sudo firewall-cmd --list-ports 放行端口查看

项目xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.nlecloud.bc</groupId>
  <artifactId>copyright-server</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>copyright-server</name>

    <parent>
        <groupId>org.springframework.boot</g

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

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

相关文章

知识图谱在提升大语言模型性能中的应用:减少幻觉与增强推理的综述

幻觉现象指的是模型在生成文本时可能会产生一些听起来合理但实际上并不准确或相关的输出&#xff0c;这主要是由于模型在训练数据中存在知识盲区所致。 为了解决这一问题&#xff0c;研究人员采取了多种策略&#xff0c;其中包括利用知识图谱作为外部信息源。知识图谱通过将信息…

Kalign 3:大型数据集的多序列比对

之前一直用的是muscle&#xff0c;看到一个文章使用了Kalign&#xff0c;尝试一下吧 安装 wget -c https://github.com/TimoLassmann/kalign/archive/refs/tags/v3.4.0.tar.gz tar -zxvf v3.4.0.tar.gz cd kalign-3.4.0 mkdir build cd build cmake .. make make test su…

OpenNJet:云原生技术中的创新者与实践者

目录 引言OpenNJet介绍OpenNJet优势1. 性能无损动态配置2. 灵活的CoPilot框架3. 支持HTTP/34. 支持国密5. 企业级应用6. 高效安全 OpenNJet 编译与安装环境准备编译环境配置配置yum源yum 安装软件包创建符号连接修改 ld.so.conf 配置 编译代码 部署 WEB SERVER配置OpenNJet部署…

Unity 性能优化之遮挡剔除(Occlusion Culling)(六)

提示&#xff1a;仅供参考&#xff0c;有误之处&#xff0c;麻烦大佬指出&#xff0c;不胜感激&#xff01; 文章目录 前言一、遮挡剔除是什么&#xff1f;二、静态遮挡剔除的使用步骤1.标记为遮挡剔除对象2.创建Occlusion Area组件3.烘焙4.Occlusion窗口Bake的参数Smallest Oc…

linux实验(数据库备份)

以下所有操作皆以机房电脑上的虚拟机为基础环境 下载链接&#xff1a;Linux课程机房虚拟机# 切换到root用户 su - root安装数据库mysql 5.7 rpm -ivh https://mirrors4.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/mysql-community-common-5.7.29-1.el7.x…

ROS 2边学边练(43)-- 利用GTest写一个基本测试(C++)

前言 在ROS&#xff08;Robot Operating System&#xff09;中&#xff0c;gtest&#xff08;Google Test&#xff09;是一个广泛使用的C测试框架&#xff0c;用于编写和执行单元测试。这些测试可以验证ROS节点、服务和消息等的正确性和性能。 如果我们需要在写的包中添加测试&…

严苛工作环境下IMU的最佳选择—爱普生M-G364及M-G354

爱普生(EPSON)秉持其省、小、精的核心技术&#xff0c;并运用长期于工业市场中所累积的专业经验与知识&#xff0c;专注于研发符合市场需求的IMU产品&#xff0c;打造出即使在具高挑战性的严苛环境下&#xff0c;亦可提供优异稳定性及高分辨率的IMU产品。随着自主精密农业机械、…

echars设置渐变颜色的方法

在我们日常的开发中&#xff0c;难免会遇到有需求&#xff0c;需要使用echars设置渐变的图表&#xff0c;如果我们需要设置给图表设置渐变颜色的话&#xff0c;我们只需要在 series 配置项中 添加相应的属性配置项即可。 方式一&#xff1a;colorStops type&#xff1a;‘lin…

jenkins常用插件之Filesystem Trigger

安装插件 Filesystem Trigger 项目配置 验证 根据上述配置&#xff0c;当1.txt文件发生变化时&#xff0c;jenkins每分钟会进行检测&#xff0c;检测到后即进行任务构建&#xff0c;后续的具体操作可自行配置

C++ 如何进阶?

一、C基础&#xff08;3个月&#xff09; 1、面向对象的三大特性&#xff1a;封装、继承、多态 2、类的访问权限&#xff1a;private、protected、public 3、类的构造函数、析构函数、赋值函数、拷贝函数 4、移动构造函数与接贝构造函数对比 5、深接贝与浅贝的区别 6、空…

为什么相同内核的Linux桌面稳定干净,而Android却臃肿不堪?

在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「 Linux的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; 对于这个问题&#xff0c;我…

每日一题 盛最多水的容器

. - 力扣&#xff08;LeetCode&#xff09; 思路分析: 利用函数的单调性解决这道题两端取最小&#xff0c;最小的往里找就是高不变或者缩小 宽减少 一定是减小的因此这题可以使用左右指针实现 public int maxArea(int[] height) {int left 0;int right height.length - 1;i…

红日靶场ATTCK 1通关攻略

环境 拓扑图 VM1 web服务器 win7&#xff08;192.168.22.129&#xff0c;10.10.10.140&#xff09; VM2 win2003&#xff08;10.10.10.135&#xff09; VM3 DC win2008&#xff08;10.10.10.138&#xff09; 环境搭建 win7&#xff1a; 设置内网两张网卡&#xff0c;开启…

TC3xx MTU概述(2)

目录 1.概述 2.如何配置NDT 3.小结 1.概述 上篇TC3xx MTU概述(1)-CSDN博客我们讲解了MTU基本功能和MBIST基本概念&#xff0c;接下来我们继续讲解MTU如何配置NDT算法。 2.如何配置NDT 前面聊了那么多概念&#xff0c;我们还是来看看如何配置MTU来实现NDT。 MTU寄存器分为…

为什么需要自动化测试?自动化有哪些优势?

前言 自动化测试&#xff0c;最近些年可谓是大火。招聘上的要求也好&#xff0c;培训班的广告也罢&#xff0c;比比皆是&#xff0c;足以说明它在业内的火爆程度。 虽然说会写自动化测试并不能说明你就很牛批&#xff0c;但是你不会的话&#xff0c;那么很抱歉&#xff0c;你…

如何复制本地docker镜像到其他主机

&#xff08;1&#xff09;打包镜像 比如我要复制的镜像是grafana的镜像 docker images 这里我把打包的镜像放在了根~目录下&#xff0c;如截图所示&#xff1a; docker save grafana/grafana:latest -o ~/grafana.jar &#xff08;2&#xff09;移动镜像 scp命令拷贝镜像到目标…

C语言 循环控制流程的跳转语句

本文 我们来说 控制流程的跳转语句 C语言 提供三种 控制流程的跳转语句 1. break 语句 我们之前讲 switch 时 大家已经看到过这个 break 了 作用是跳出当前 switch 在循环中 它的作用也差不多 这里 我们举个生活中的例子 例如 我们在操场上跑步 计划跑十圈 但是 还没跑完 我…

【数据结构初阶】希尔排序

鼠鼠最近学习了希尔排序&#xff0c;做个笔记&#xff01; 希尔排序也是插入排序的一种捏&#xff01;本篇博客也是用排升序来举例捏&#xff01; 希尔排序是基于直接插入排序的&#xff0c;是由大佬D.L.Shell提出的。 目录 1.希尔排序 1.1.预排序 1.2.直接插入排序 2.希…

jetson实操(二):jetson nano发送短信到指定用户

文章目录 一、准备工作二、代码实现 一、准备工作 腾讯云网址&#xff1a;点击 注&#xff1a;需先申请“短信签名”和“短信正文”&#xff0c;按照要求填写申请即可&#xff0c;腾讯云的审核效率还是很快的&#xff0c;一般在1-2个小时内就会有结果&#xff0c;链接&…

Linux环境创建普通用户,授权root权限。报错:usermod: group ‘sudo‘ does not exist

在Linux环境下&#xff0c;创建普通用户并授权root权限需要以下步骤&#xff1a; 1. 以root用户登录终端。 2. 执行以下命令创建一个新的用户&#xff0c;其中username为你想要创建的用户名&#xff0c;可根据实际情况自行更改。 adduser username 3. 设置该用户的密码&…