HyperLedger/Fabric 快速上手优化版 fabric-sdk-java

教程类 同时被 2 个专栏收录
22 篇文章 0 订阅
4 篇文章 0 订阅

1. 前言

   由于 fabric-sdk-java 存在普遍的上手难问题, 官方 Java 版 sdk 单元测试 demo 比较难理解, 对于想要通过使用 java-sdk 入门 fabric 的朋友来说, 这个是一个比较大的阻碍。 鉴于此, 本博文重新整理了下 Java 版 sdk 的使用, 在官方源码的基础上进行重新封装一层, 目的就是消除这道入门障碍, 让大家都可以使用 java-sdk 来拥抱 fabric。


fabric-sdk-server项目地址 当前项目版本只适合大家入门fabric, 对于支持 tls 以及 ca 等其他功能的适配, 由于个人时间及工作的原因, 无法在现有版本上进行支持,后续有机会可能会在新版本中发布。

 

2. 前置条件

 

3. 区块链网络修改

############################################################
# 关闭每次重启fabric网络时重新生成通道及加密配置文件信息(建议)
############################################################
# 首次启动 network_setup.sh 脚本后, 修改以下代码, 重启 Fabric 服务
vim network_setup.sh

# 删除 network_setup.sh 脚本中的以下代码
#    function networkUp   -> source generateArtifacts.sh $CH_NAME   # 删除 else 整个片段的代码
#    function networkDown -> rm -rf channel-artifacts/*.block channel-artifacts/*.tx crypto-config


############################################################
# 注释掉tls配置(必须)
############################################################
cd fabric/examples/e2e_cli

vim base/peer-base.yaml
    CORE_PEER_TLS_ENABLED=true 
    #   改为
    CORE_PEER_TLS_ENABLED=false


vim base/docker-compose-base.yaml
    ORDERER_GENERAL_TLS_ENABLED=true
    #   改为
    ORDERER_GENERAL_TLS_ENABLED=false

vim docker-compose-cli.yaml
    CORE_PEER_TLS_ENABLED=true
    #   改为
    CORE_PEER_TLS_ENABLED=false


############################################################
# 注释掉 script.sh 脚本中原有通过 cli 命令行操作区块链网络的相关代码
############################################################
cd fabric/examples/e2e_cli

vim scripts/script.sh        
# 注释块起始位置(包含以下部分)  
    ## Create channel
    echo "Creating channel..."
    createChannel
# 注释块截至位置(包含以下部分)
    #Query on chaincode on Peer3/Org2, check if the result is 90
    echo "Querying chaincode on org2/peer3..."
    chaincodeQuery 3 90   


############################################################
# 启动区块链网络, 先关闭再启动, 或 直接 restart
############################################################
bash network_setup.sh down
bash network_setup.sh up                

 

4. SDK 操作步骤

  1. 拉取 github 仓库指定版本代码到本地

  2. 配置 com.hyperledger.fabric.sdk.common.Constants 类中 redis 服务的信息

  3. 配置 com.hyperledger.fabric.sdk.common.Config 类中 区块链网络的节点信息

  4. 替换掉 answer-fabric-sdk\src\test\resources 下的配置文件, 注意是 XXX/test/resources

    • chaincodes/*    智能合约, 如果你测的是官方转账功能, 可不用替换
    • channel-artifacts/*    通道配置信息及创世纪块等, 可直接删掉, 将工具生成的目录拷贝过来
    • config.properties    官方sdk配置文件, 可不必替换
    • crypto-config/*    证书签名密钥等文件, 可直接删掉, 将工具生成的目录拷贝过来
    • policy/*    背书策略文件, 可不用替换

说明: 考虑到方便大家上手, channel-artifacts 和 crypto-config 目录的文件采用完成替换模式, 即: 删除掉该项目这两个文件夹下的文件, 然后直接将你生成好的这两个目录原封不动的拷贝过来即可。 项目下的智能合约代码为官方转账功能代码, 即:chaincode_example02.go

最便捷的方式: 第4步只需替换 channel-artifacts 和 crypto-config 两个目录的文件即可。

  1. 使用以下测试用例即可通过sdk来操作区块链网络
    • APITest.java    模拟 全流程 操作区块链网络
    • BlockChainTest.java    查询区块 | 账本信息
    • InvokeTest.java    模拟转账操作
    • QueryTest.java    查询智能合约
    • UpgradeTest.java    升级智能合约
    • JoinPeerTest.java    加入新节点

建议按如下顺序执行测试用例: APITest -> JoinPeerTest -> QueryTest -> InvokeTest -> QueryTest -> UpgradeTest -> QueryTest

 

5. transaction.proto

enum TxValidationCode {
	VALID = 0;
	NIL_ENVELOPE = 1;
	BAD_PAYLOAD = 2;
	BAD_COMMON_HEADER = 3;
	BAD_CREATOR_SIGNATURE = 4;
	INVALID_ENDORSER_TRANSACTION = 5;
	INVALID_CONFIG_TRANSACTION = 6;
	UNSUPPORTED_TX_PAYLOAD = 7;
	BAD_PROPOSAL_TXID = 8;
	DUPLICATE_TXID = 9;
	ENDORSEMENT_POLICY_FAILURE = 10;
	MVCC_READ_CONFLICT = 11;
	PHANTOM_READ_CONFLICT = 12;
	UNKNOWN_TX_TYPE = 13;
	TARGET_CHAIN_NOT_FOUND = 14;
	MARSHAL_TX_ERROR = 15;
	NIL_TXACTION = 16;
	EXPIRED_CHAINCODE = 17;
	CHAINCODE_VERSION_CONFLICT = 18;
	BAD_HEADER_EXTENSION = 19;
	BAD_CHANNEL_HEADER = 20;
	BAD_RESPONSE_PAYLOAD = 21;
	BAD_RWSET = 22;
	ILLEGAL_WRITESET = 23;
	NOT_VALIDATED = 254;
	INVALID_OTHER_REASON = 255;
}

 

6. 相关网址

  • 1
    点赞
  • 1
    评论
  • 5
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值