fabric-sdk-java+springboot实现invoke,query,enroll等示例(3)

fabric-sdk-java+springboot实现invoke,query,enroll等示例(3)一 简介这里介绍一下 fabric sdk java 的使用 网络环境是基于 fabric1 4 0 的 当然在低版本的 fabric 网络中也是适用的 只是在第二部分 启动修改 fabric 网络为不启用 TLS 部分 启动网络环境的方式不太相同 高版本 1 4 3 及以后 的需要修改一些东西 例如将后面配置文件中的 admincerts 改成 signcerts 为了保证顺利启动 建议还是直接启动 1 4 0 网

一,简介

这里介绍一下fabric-sdk-java的使用,网络环境是基于fabric1.4.0的。当然在低版本的fabric网络中也是适用的。只是在第二部分,启动 修改fabric网络为不启用TLS 部分, 启动网络环境的方式不太相同。高版本(1.4.3及以后)的需要修改一些东西, 例如将后面配置文件中的admincerts改成signcerts,为了保证顺利启动,建议还是直接启动1.4.0网络为好,

首先确保你已经能够自己搭建其一个可用的fabric网络。(如果您还没有把fabric基本网络搭建成功,请移步fabric网络环境搭建)不过我们需要一个关闭了TLS的网络,

首先我们需要启动一个关闭TLS的fabric网络。网络需要两个组织,四个节点和两个CA。就是fabric为我们提供好的e2e网络。

二,修改fabric网络为不启用TLS

进入first-network文件夹,(这里建议你将first-network复制一份,并且重命名为2first-network,避免你以后需要启用TLS的时候还得再改。),打开byfn.sh ,修改COMPOSE_FILE=docker-compose-cli.yamlCOMPOSE_FILE=docker-compose-e2e.yaml。这样在启动的时候,就会为我们启动e2e的网络。(你可能会发现当前目录中并没有docker-compose-e2e.yaml这个文件,别担心,脚本会自动为我们生成的)不过光改这个还不够。还需要把TLS关掉。

  1. 打开docker-compose-e2e-template.yaml把 *_TLS_ENABLED=true,前面加个# 注释掉或是把true改成false。注意*是匹配任意字符。就是把你找到的含有TLS_ENABLED的都改了
  2. 进入base文件夹,把该文件夹里面的两个文件进行1中的操作。
  3. e2e 网络是没有cli客户端的, 这样不方便我们手动控制合约的部署,实例化等操作,如果你想要启动一个,可以在docker-compose-e2e-template.yaml最下面加入下面内容 , (拷自docker-compose-cli.yaml)文件(粘贴时请注意yaml文件的缩进)
 cli: container_name: cli image: hyperledger/fabric-tools:$IMAGE_TAG tty: true stdin_open: true environment: - GOPATH=/opt/gopath - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock #- FABRIC_LOGGING_SPEC=DEBUG - FABRIC_LOGGING_SPEC=INFO - CORE_PEER_ID=cli - CORE_PEER_ADDRESS=peer0.org1.example.com:7051 - CORE_PEER_LOCALMSPID=Org1MSP #- CORE_PEER_TLS_ENABLED=true - CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt - CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key - CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt - CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users//msp working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer command: /bin/bash volumes: - /var/run/:/host/var/run/ - ./../chaincode/:/opt/gopath/src/github.com/chaincode - ./crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ - ./scripts:/opt/gopath/src/github.com/hyperledger/fabric/peer/scripts/ - ./channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts depends_on: - orderer.example.com - peer0.org1.example.com - peer1.org1.example.com - peer0.org2.example.com - peer1.org2.example.com networks: - byfn

执行脚本,启动网络。

如果你的网络启动成功,恭喜你,你已经完成了教程的四分之一。

三,构建spring boot项目(由于springboot版本更新, 无法按照教程正常执行, 建议可以直接创建一个普通gradle项目,转到分割线处继续执行就好)

进入快速构建spring boot网页 spring boot。

fabric-sdk-java+springboot实现invoke,query,enroll等示例(3)

按照图片从上到下点击,最后genetate project。会下载一个压缩包到你的本地。解压到你的workspace。(请问workspace是哪里?—就是你的Java工作空间。)

等等,为什么要选择这么老的版本?其实选择springboot2也可以的, 就是springboot2跟fabric-java-sdk1.0.0不兼容,会照成版本冲突,博主亲自测试过,fabric-sdk-java采用1.4.0的情况下,springboot需要用2.1.12会兼容(好像是这个版本号,记不太清了),其他的都不行,你可以手动修改测试一下。

在你的工具(idea或是eclipse)中打开项目,需要等待几分钟,等项目构建完毕。

——————————————————-分割线———————————————————–

项目构建完成后,引入一下fabric-sdk-java依赖,在builde.gradle中加入

compile('org.hyperledger.fabric-sdk-java:fabric-sdk-java:1.0.0')

加入完成后,

eclipse中:右键build.gradle >> Gradle  >>> refresh gradle project 。导入相关的依赖包。

idea中的操作方法就不赘述了,自己研究一下,都差不多的。

完成后复制以下代码到项目的main/java文件夹下面,就是红色圈住的部分。

代码在

复制完成后项目的目录是

fabric-sdk-java+springboot实现invoke,query,enroll等示例(3)

然后在first-network目录中找到生成的crypto-config文件夹。并考到你本地的项目所盘的data目录中。我项目在E盘, 所以放再E盘的data目录

fabric-sdk-java+springboot实现invoke,query,enroll等示例(3)

打开Config.java,,修改相关的配置为正确的值,其中所有的grpcs要改为grpc。还有baseUrl改成自己的, 然后打开QueryChaincode.java。修改chaincode的名字以及引用的参数。执行main方法。

如果顺利的话,就可以执行成功了,如果有报错,有可能是你的证书文件路径放错了,或是Config.java 里面的配置文件有问题。

然后打开InvokeChaincode.java。适当修改其中参数。执行main方法。。。。祝你好运!另外在network目录下,有创建通道和部署链代码的简单示例,而user目录下面有注册用户的简单示例,可以自行测试一下,不过如果你测试channel的创建的话,还需要把channel-artifacts文件夹也拷贝到data文件夹下面,而智能合约的部署需要配置一下智能合约的路径,这个都不太复杂,自己探索一下就好了。

友情提示: 上传的demo有错误的地方, 需要把util.java里的ECDSA替换成EC, 在第136行 , 这个不会影响教程的正常执行, 但是在测试创建channel时会有影响 ,  十分抱歉 .

其实按照目前所提到的,不用spring boot也可以,你直接建立一个普通的gradle项目,按照步骤执行也是可以的,那么为什么还要用spring boot呢? 答案就是为了起一个web服务,好在web服务中来操作。至于这个就不一步一步的教了。直接把我的demo上传了,需要可以下载。下载示例

作为一个良心的博主,我并不想坑大家这么多积分,无奈CSDN不能自己设置积分, 如果有想要又买不起积分的童鞋,可以再下方评论,

不过。。。。。。

代价就是。。。。

请顺手点个赞吧。

fabric-sdk-java+springboot实现invoke,query,enroll等示例(3)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/178597.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午4:55
下一篇 2026年3月26日 下午4:56


相关推荐

  • leetcode-7整数反转「建议收藏」

    leetcode-7整数反转「建议收藏」原题链接给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。示例 1:输入:x = 123输出:321示例 2:输入:x = -123输出:-321示例 3:输入:x = 120输出:21示例 4:输入:x = 0输出:0class Solution {public: int rever

    2022年8月8日
    7
  • navicat永久激活码2021(最新序列号破解)

    navicat永久激活码2021(最新序列号破解),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    1.3K
  • WPF 控件与布局

    WPF 控件与布局控件到底是什么 nbsp nbsp 程序的本质就是 数据 算法 用户输入原始的数据 算法处理原始数据并得到结果数据 问题就在于程序如何将结果数据显示给用户 同样一组数据 你可以使用 LED 阵列显示出来 或者以命令行模式借助各种格式控制符 如 TAB 对齐并输出 但这些都不如图形界面 GUI nbsp GraphicUserI 来的友好和方便 GUI 的方便在于它对数据展示的直观性

    2026年3月18日
    2
  • EclipseSVN更新和提交

    EclipseSVN更新和提交EclipseSVN更新和提交阅读钱请先阅读前一篇文章:eclipse安装与SVN插件的安装以及分享和检出更多资源可关注好男人的微信公众号:“菜鸟资源分享”1、上部分结束后,此时我们在Tom_work中修改项目代码,完后提交到服务器端,在重新打开一个eclipse,工作空间选择Jeery_work,完后再Jeery_work点击更新(在点击更新前先将未修改的项目文件导入到eclipse中,…

    2022年10月10日
    6
  • 自编R计算MSE(均方误差)[通俗易懂]

    自编R计算MSE(均方误差)[通俗易懂]基本原理1.生成关于x1~N(5,3),x2~N(100,10),error~N(0,1)2.自己定一个实际对线性回归模型,并计算得到真实的yy=1.5+0.8×1+1.8×2+error3.对x1,x2进行线性拟合,当然这里也可以自写函数用最小二乘法原理,进行参数对估计4.提取的每一个beta1,beta25.计算他的均方误差,计算公式代码k=100000#定义实验次数beta_x1=c()#定义空列beta_x2=c()for(iin1:k){

    2022年9月1日
    6
  • 彻底解决鼠标单击变双击问题的方法(图例)「建议收藏」

    彻底解决鼠标单击变双击问题的方法(图例)「建议收藏」两个月前,己“服役”了几年的鼠标出现了故障,单击经常变成双击,这样想用鼠标移动文件的时候就很麻烦,常常要移动几次才能成功。起初我怀疑是系统的问题,但鼠标在别的电脑上使用也出现同样的问题,因此确认鼠标本

    2022年8月1日
    18

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号