区块链(ubuntu)-Hyperledger Fabric的Java SDK开发

Posted Ferron Zhu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链(ubuntu)-Hyperledger Fabric的Java SDK开发相关的知识,希望对你有一定的参考价值。

文章目录


这次的博客是为了记录在hyperledger中开发JavaSDK的过程,至于实验环境的搭建,链码的开发和部署等内容参见博客: 区块链(ubuntu)-Hyperledger Fabric实验环境搭建,修改chaincode,部署chaincode以及测试chaincode(JAVA),其主要作用就是为了在真实开发中直接使用Java工具类的方法调用链码!希望各位觉得这篇博客对你的学习有帮助的,能一键三连,创作不易!

开发example02普通方法的SDK

  • 接下来的一切的前提都是完成前面博客内容的前提下,重新执行一下部署和测试的代码

    • 注意:每次重新部署链码的时候需要删除example02_java项目下的wallet文件夹
    • 所有命令在ubuntu用户下操作,出现一些莫名其妙的问题则在命令前面加sudo
    . ./init.sh
    #注意:原来的channel名字叫mycc_java02,但是下面SDK中写的是mycc02_java,因此部署的时候将channel的名字改为mycc02_java
    . scripts/deploy_chaincode.sh java $PWD/chaincode/chaincode_example02/java mycc02_java
    . scripts/test_example02.sh mycc02_java
    
  • 配置maven环境

    cd /tmp
    wget https://mirrors.cnnic.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
    sudo tar zxf apache-maven-3.6.3-bin.tar.gz
    sudo mv apache-maven-3.6.3 /opt/apache-maven
    sudo cat >> ~/.bashrc <<EOF
    # setup maven environments
    # =====================
    export PATH=$PATH:/opt/apache-maven/bin
    export MAVEN_HOME=/opt/apache-maven
    # =====================
    EOF
    source ~/.bashrc
    

  • 配置maven镜像地址

    vim /opt/apache-maven/conf/settings.xml
    

  • 打成jar包

    cd /home/ubuntu/workspace/app/example02_java/
    mvn package
    

  • 删除默认的缺省管理员以及管理员登录,和在Org1上注册一个新的user01

    java -classpath ./target/example02-1.0-SNAPSHOT-jar-with-dependencies.jar example02.EnrollAdmin
    java -classpath ./target/example02-1.0-SNAPSHOT-jar-with-dependencies.jar example02.RegisterUser
    

  • 测试查询和修改的SDK

    java -classpath ./target/example02-1.0-SNAPSHOT-jar-with-dependencies.jar example02.InvokeQuery
    java -classpath ./target/example02-1.0-SNAPSHOT-jar-with-dependencies.jar example02.InvokeTransfer
    

开发example01的SDK

  • 部署example01的链码

    . ./init.sh 
    . scripts/deploy_chaincode.sh java $PWD/chaincode/chaincode_example01/java mycc_java
    . scripts/test_example01.sh mycc_java
    
  • 编写测试的SDK:新建example01_java的maven项目,按照example02的方式编写测试的SDK,下图为其中调用InvokeHi的工具类

  • 将编写好的maven项目打成jar

    cd /home/ubuntu/workspace/app/example01_java/
    mvn package
    
  • 删除默认的缺省管理员以及管理员登录,和在Org1上注册一个新的user01,以及测试Hi方法。

    java -classpath ./target/example01_java-1.0-SNAPSHOT-jar-with-dependencies.jar example01.EnrollAdmin
    java -classpath ./target/example01_java-1.0-SNAPSHOT-jar-with-dependencies.jar example01.RegisterUser
    java -classpath ./target/example01_java-1.0-SNAPSHOT-jar-with-dependencies.jar example01.InvokeHi
    

开发example02中Recharge方法的SDK、连接和使用org2节点

  • 重新部署example02的链码

  • 编写Recharge的调用工具类

  • 将编写好的maven项目打成jar包

  • 测试

    java -classpath ./target/example02-1.0-SNAPSHOT-jar-with-dependencies.jar example02.EnrollAdmin
    java -classpath ./target/example02-1.0-SNAPSHOT-jar-with-dependencies.jar example02.RegisterUser
    java -classpath ./target/example02-1.0-SNAPSHOT-jar-with-dependencies.jar example02.InvokeQuery
    java -classpath ./target/example02-1.0-SNAPSHOT-jar-with-dependencies.jar example02.InvokeRecharge
    java -classpath ./target/example02-1.0-SNAPSHOT-jar-with-dependencies.jar example02.InvokeQuery
    

  • example02中所有代码中调用链码的工具类初始的常量中的org1改成org2,删除target文件夹后重新打包maven项目

  • 测试1

    java -classpath ./target/example02-1.0-SNAPSHOT-jar-with-dependencies.jar example02.EnrollAdmin
    java -classpath ./target/example02-1.0-SNAPSHOT-jar-with-dependencies.jar example02.RegisterUser
    java -classpath ./target/example02-1.0-SNAPSHOT-jar-with-dependencies.jar example02.InvokeQuery
    

  • 测试2

    java -classpath ./target/example02-1.0-SNAPSHOT-jar-with-dependencies.jar example02.InvokeTransfer
    java -classpath ./target/example02-1.0-SNAPSHOT-jar-with-dependencies.jar example02.InvokeQuery
    java -classpath ./target/example02-1.0-SNAPSHOT-jar-with-dependencies.jar example02.InvokeRecharge
    java -classpath ./target/example02-1.0-SNAPSHOT-jar-with-dependencies.jar example02.InvokeQuery
    

以上是关于区块链(ubuntu)-Hyperledger Fabric的Java SDK开发的主要内容,如果未能解决你的问题,请参考以下文章

区块链(ubuntu)-Hyperledger Fabric的Java SDK开发

区块链(ubuntu)-Hyperledger Fabric的Java SDK开发

区块链(ubuntu)-Hyperledger Fabric的Java SDK开发

区块链(ubuntu)-Hyperledger Fabric的隐私保护

区块链(ubuntu)-Hyperledger Fabric的隐私保护

区块链(ubuntu)-Hyperledger Fabric的隐私保护