该项目可直接在github上访问。

该项目介绍如何使用fabric-sdk-java框架,基于fabric-sdk-java v1.1正式版开发,可向下兼容1.0版本。

该项目没有对原JAVA-SDK做修改,主要是结合HyperLedger Fabric与fabric-sdk-java中的交互方式做了个人感觉更为清晰的描述,希望能够帮助更多的人尽快熟悉fabric-sdk-java的操作流程和方式。

sdk-advance

sdk-advance是基于fabric-sdk-java v1.1的服务,其主要目的是为了更简单的使用fabric-sdk-java,对原有的调用方法做了进一步封装,主要提供了各种中转对象,如智能合约、通道、排序服务、节点、用户等等,最终将所有的中转对象交由一个中转组织来负责配置,其对外提供服务的方式则交给FabricManager来掌管。

该项目仅作为学习分享的形式提交维护,关于生产部署方面,sdk-advance与app的交互可自行选择采用thrift或protobuf等数据传输协议实现,这里并没有提供该方案的具体实现,需要自己动手解决。

sdk-advance-intermediate

intermediate系列对象是该项目的主要封装对象,间接屏蔽了真实应用层与fabric-sdk-java之间的直接交互。

  • IntermediateOrderer
    对于Orderer,我们需要知道所选组织名称,同时还需要知道Orderer的服务器域名及真实访问地址。这里的服务器域名是指由crypto-config.yaml中进行指定。
    该对象主要提供了对Orderer的服务器域名及真实访问地址的封装。
  • IntermediatePeer
    Peer是部署于本地节点的配置对象,主要包括当前指定的组织节点域名、当前指定的组织节点事件域名、当前指定的组织节点访问地址、当前指定的组织节点事件监听访问地址以及当前peer是否增加Event事件处理。这里的主要配置信息也由crypto-config.yaml中进行指定
  • IntermediateChannel
    每一个Peer所加入的Channel都有独立的通道信息,包括名称或通道tx文件等。IntermediateChannel中定义了通道名称,除此之外,还针对上面两个对象进行了调用,并最终生成了Channel对象。
    IntermediateChannel中已经开始提供对外服务了,主要依赖于Channel对象所提供的,包括最基本的Peer加入频道的方法。
    另外,IntermediateChannel还提供了一系列基本的溯源方法,包括查询当前频道的链信息,包括链长度、当前最新区块hash以及当前最新区块的上一区块hash、在指定频道内根据transactionID查询区块、在指定频道内根据hash查询区块以及在指定频道内根据区块高度查询区块等方法。
  • IntermediateChaincodeID
    IntermediateChaincodeID对象与IntermediateChannel相似,除了包含了必须的成员参数外,也提供了一些对外服务。在IntermediateChaincodeID中主要对智能合约名称、包含智能合约的go环境路径、智能合约安装路径、智能合约版本号、指定ID的智能合约以及单个提案请求的超时时间以毫秒为单位和事务等待时间以秒为单位。
    同时对外提供了安装智能合约、实例化智能合约、升级智能合约、执行智能合约以及查询智能合约的服务。
  • IntermediateUser
    Fabric中有用户的概念,当然除了用户之外,在1.1中也有组织、节点等基于CA服务的概念。IntermediateUser主要就是用来处理用户CA信息的,目前尚未对此类服务提供更好的封装策略,后续更新中会逐步加入进来,以便提供更简便的实现方案。当前的具体实现可参考IntermediateOrg。
  • IntermediateOrg
    上述无论是排序服务、节点服务或是通道、合约等内容,都应该被同一个组织所拥有,这里的同一个是指单体组织,而不是只为一个组织服务,整个基于Fabric的区块链网络至少应该为一个组织提供服务。
    在IntermediateOrg中集合了已有的对象信息,并从中生成了组织用户以便调用Fabric网络中的接口数据。案例中的方案并非最优方案,关于Fabric CA的实践还没有完成(按照官方的Demo实现无法跑通,如果有能够实现的朋友,欢迎提交代码)。

sdk-advance-manager

  • OrgManager
    组织生成器,该对象已经完全暴露给APP所使用,可以通过SimpleManager对象查看其主要用法。通过OrgManager对外暴露的服务生成系列Intermediate对象,并最终使用use方法确定调用的组织具体对象来生成真正提供Fabric区块链网络服务的FabricManager。
    在使用OrgManager的时候,如果有进一步开发SAAS或更深层BAAS服务的想法,建议不要直接使用SimpleManager中的方案,而是结合关系型数据库如MySQL等解决方案,将组织中的相关数据持久化,以便后台可以直接获取并调用。
  • FabricManager
    区块链网络服务管理器FabricManager,作为APP直接调用Fabric区块链网络的入口对象,该对象提供了Channel和ChaincodeID相关的所有接口。

simple

simple是一个基于spring-boot的项目,在simple中主要关注SimpleManager对象的使用,该对象的使用建议根据自身业务的实际需求重新包装上线,但直接基于此项目应用也没什么大问题。我的这个simple中的ip的自己申请的服务器,大家可以随便测试,但不保证有效期,建议自行搭建本地服务测试。

simple-demo

调用示例:

OrgManager orgManager = new OrgManager();
orgManager.init("Org1").setUser("Admin", getCryptoConfigPath("aberic"), getChannleArtifactsPath("aberic")).setCA("ca", "http://118.89.243.236:7054").setPeers("Org1MSP", "org1.example.com").addPeer("peer0.org1.example.com", "peer0.org1.example.com", "grpc://118.89.243.236:7051", "grpc://118.89.243.236:7053", true).setOrderers("example.com").addOrderer("orderer.example.com", "grpc://118.89.243.236:7050").setChannel("mychannel").setChainCode("test2cc", "/code", "chaincode/chaincode_example02", "1.2", 90000, 120).openTLS(true).openCATLS(false).setBlockListener(map -> {logger.debug(map.get("code"));logger.debug(map.get("data"));}).add();FabricManager fabricManager = orgManager.use("Org1");fabricManager.install();fabricManager.instantiate(argArray);fabricManager.upgrade(argArray);fabricManager…

HyperLedger/Fabric JAVA-SDK with 1.1相关推荐

  1. Hyperledger Fabric Java SDK最新教程

    Fabric Java SDK是Fabric区块链官方提供的用于Java应用开发的SDK,全称为Fabric-sdk-java,网上可用资料不多,本文列出了精心整理的针对Fabric Java SDK ...

  2. fabric sdk java教程,Fabric Java SDK最新教程

    Fabric Java SDK是Fabric区块链官方提供的用于Java应用开发的SDK,全称为Fabric-sdk-java,网上可用资料不多,本文列出了精心整理的针对Fabric Java SDK ...

  3. fabric sdk java_Hyperledger Fabric Java SDK最新教程

    Fabric Java SDK是Fabric区块链官方提供的用于Java应用开发的SDK,全称为Fabric-sdk-java,网上可用资料不多,本文列出了精心整理的针对Fabric Java SDK ...

  4. Hyperledger Fabric PHP SDK

    Hyperledger Fabric PHP SDK是社区提供的用于Hyperledger Fabric区块链应用开发的软件包,其目的在于为PHP应用提供访问Hyperledger Farbic区块链 ...

  5. fabric sdk php,Hyperledger Fabric PHP SDK

    Hyperledger Fabric PHP SDK是社区提供的用于Hyperledger Fabric区块链应用开发的软件包,其目的在于为PHP应用提供访问Hyperledger Farbic区块链 ...

  6. fabric java sdk解析channel.queryTransactionByID(txId)方法的返回值

    解析区块链上具体某一个块的内容,官方java sdk已经给出了解析案例,具体解析过程也可参考QueryHandler#queryBlockChain. 但是如果要根据交易ID(txId)查找交易信息, ...

  7. Hyperledger Fabric SDK Go构建第一个应用

    写在前面: 本文内容翻译自:https://chainhero.io/2018/03/tutorial-build-blockchain-app-2/ ,文档中的命令操作均在实际环境进行验证,现将成果 ...

  8. Hyperledger Fabric Rest API服务开发教程【含源码】

    Hyperledger Fabric Rest API服务开发教程[含源码] Hyperledger Fabric 提供了软件开发包/SDK以帮助开发者访问fabric网络 和部署在网络上的链码,但是 ...

  9. Hyperledger Fabric 词汇表

    Anchor Peer 在channel中每一个组织都有一个AnchorPeer,用于在不同的组织之间通过Gossip协议进行数据分发和同步. Block(块) 与channel上的前一个块加密链接的 ...

  10. Hyperledger Fabric 1.0 实战开发系列 第四课 搭建node.js服务器

    接下来我要做的是用fabric sdk来做出应用程序,代替CLI与整个区块链网络交互.并且实现一个http API,向社区提供一个简单的接口,使社区轻松的与区块链交互. 官方虽然提供了Node.JS, ...

最新文章

  1. 项目总结三--波纹视图
  2. (shell脚本编程)linux如何利用脚本执行多条命令以及linux如何执行定时任务
  3. 驱动学习模块最简单示例
  4. github上的linux项目,克隆GitHub上项目的非Master分支
  5. 基于SpringMVC、Maven以及Mybatis的环境搭建 【转】
  6. jmeter时间函数格林尼治时间_VB常用函数——时间函数和DateDiff函数
  7. linux8重启服务代码,linux(centos8):安装分布式事务服务seata(seata 1.3.0/centos 8.2)
  8. repeating 路由_CSS中带有示例的repeating-linear-gradient()函数
  9. bv值是什么意思_BVR电线是什么意思BVR电线电缆规格型号
  10. 汇编:采用顺序编程方法,实现在屏幕上显示大写字幕A
  11. cacti配置流量汇总
  12. 配置Typescript+Node环境
  13. 基于队列的二叉树层次遍历
  14. flutter ios打包_Flutter 的Android 、iOS 打包
  15. TCP与UPD的比较
  16. Word2010邮件合并(附带照片)
  17. 大数据还是人工智能?哪个发展更好
  18. java使用ffmpeg对视频进行转码和分辨率转换
  19. php三行情书,《三行情书》经典语录 经典三行情书 最美三行情书
  20. Dominating Patterns UVALive - 4670 (ac自动机)

热门文章

  1. 蓝桥杯 BASIC-8 基础练习 回文数
  2. python 输入一个列表s和一个由二元组成的列表p_re --- 正则表达式操作 — Python 3.9.1 文档...
  3. NoSQL Manager for MongoDB 连接配置
  4. JPA映射组合主键时错误:No default constructor for entity
  5. SpringCloud微服务实战(一)-简介
  6. Zookeeper3.4.10使用Curator
  7. zabbix自动发现redis端口并监控redis性能
  8. 如何做到每天都写代码
  9. mysql —— 分表分区(1)
  10. Linux中inode值是什么?