注意:
区块链 SDK 对接网络调用方式支持 Fabric 网络。
若应用系统调用频率较高,则需要直接使用区块链 SDK 与区块链网络对接,相比云 API 调用方式性能更高。
除了支持社区版区块链 SDK(Java、NodeJS、Golang),TBaaS 对 Golang 版和 Java 版的社区区块链 SDK 进行了定制(tbaas-fabric-sdk-go 和 tbaas-fabric-sdk-java),简化了应用系统与区块链网络连接的流程。
1. 获取网络名和访问地址
1. 登录 TBaaS 控制台,选择左侧导航栏中的 Fabric > 区块链网络。
2. 在区块链网络页面,选择需查看的网络,单击管理进入网络概览页面。
3. 在网络基础信息模块找到网络名和访问地址,填写到配置文件的网络名和 url 相关字段。如下图所示:


2. 获取 MSP 和组织名
1. 在组织与节点页签,选择网络组织。
2. 找到当前组织信息,填写到配置文件的 MSP 相关字段;截取
.
左边的部分,如org-251005746
,填写到配置文件的组织名相关字段。如下图所示:

3. 获取节点名称
1. 在组织与节点页签,选择节点管理。
2. 找到当前组织的节点列表,选择一个节点并复制节点名称,填写到配置文件的关于节点名字段。如下图所示:


4. 部署合约
1. 在合约管理页签,单击新建合约。
2. 在新建合约中,填写如下基本信息:
合约名称:填写 mycc
合约版本:填写 v1.0
选择合约语言:选择 Go
上传合约压缩包
3. 单击安装,并选择 peer 节点。


4. 单击合约实例化,等待合约状态更新为"已实例化"即可。
5. 申请证书流程
1. 前往 OpenSSL 官网,下载 openssl 并配置安装。
2. 下载 ecccsr 工具,解压后执行
sh ecccsr.sh
,该命令会生成以下四个文件:user_ecc_sign.key:为用户证书对应私钥,需安全保存,支持在 SDK 中使用。
user_ecc_sign.csr:用于在 TBaaS 控制台 申请用户证书。
user_ecc_tls.key:为用户 tls 证书对应私钥,需安全保存,支持在 SDK 中使用。
user_ecc_tls.csr:用于在 TBaaS 控制台 申请用户 tls 证书。
3. 在证书管理界面添加申请证书,填写证书标识,并上传 user_ecc_sign.csr 和 user_ecc_tls.csr。如下图所示:


4. 申请成功后可以单击下载对应证书,压缩包包含如下文件:
ca.crt:组织根证书
user_sign.crt:用户证书
user_tls.crt:用户 tls 证书
5. 将三个证书 ca.crt,user_sign.crt,user_tls.crt 和两个私钥 user_ecc_sign.key 和 user_ecc_tls.key 放置到对应 SDK 的证书目录下并替换。修改 SDK 配置文件 config.yml 的相应的路径。
6. SDK 使用
6.1 tbaas-fabric-sdk-go
1. 下载进入 tbaas-fabric-sdk-go,进入 tbaas-fabric-sdk-go/fabric-sdk-demo 目录。
2. 将 main.go 示例代码中的 configFile,mspId,username,channelName 和 contractName 进行相应修改,示例如下:
const (configFile = "config/config.yaml"// 组织MSPIDmspId = "org-251005746.fabric-5x6wdaow3q"// 用户名username = "test"// 通道名channelName = "channel-9xjcb2"// 合约名contractName = "gotest")
3. 更新配置 yml 文件中相关的内容:
version: 1.0.0client:# 客户端默认使用的组织organization: org-251005746logging:# sdk日志级别level: infotlsCerts:client:# 用户TLS私钥路径key:path: config/test/user_ecc_tls.key# 用户TLS证书路径cert:path: config/test/user_tls.crt# 通道信息channels:# 通道名channel-9xjcb2:# peer节点列表peers:# peer节点名peer1-org-251005746.fabric-5x6wdaow3q:# orderer节点列表orderers:- orderer1-org-251005746.fabric-5x6wdaow3q# 组织信息organizations:# 组织名org-251005746:# 组织mspId,形式为${orgName}.${clusterId},orgName为组织名,clusterId为网络IDmspid: org-251005746.fabric-5x6wdaow3q# 该组织下的节点列表peers:- peer1-org-251005746.fabric-5x6wdaow3q# 组织用户users:# 用户名test:# 用户私钥路径key:path: config/test/user_ecc_sign.key# 用户证书路径cert:path: config/test/user_sign.crt# 节点信息peers:# peer节点名peer1-org-251005746.fabric-5x6wdaow3q:# peer节点urlurl: grpcs://org-251005746-fabric-5x6wdaow3q.tbaas.tech:8080grpcOptions:# peer节点TLS中的SNI,使用节点名ssl-target-name-override: peer1-org-251005746.fabric-5x6wdaow3q# TLS CA证书路径tlsCACerts:path: config/test/ca.crtentityMatchers:peer:# 需要配置为发起peer- pattern: (\\w*)peer1-org-251005746.fabric-5x6wdaow3q(\\w*)mappedHost: peer1-org-251005746.fabric-5x6wdaow3q# 多组织背书配置如下,前三项需配置为其他背书组织的PeerName,urlSubstitutionExp与orderer的相同# - pattern: peer1-org-251005762.fabric-5x6wdaow3q# mappedHost: peer1-org-251005762.fabric-5x6wdaow3q# sslTargetOverrideUrlSubstitutionExp: peer1-org-251005762.fabric-5x6wdaow3q# urlSubstitutionExp: grpcs://org-251005746-fabric-5x6wdaow3q.tbaas.tech:8080orderer:- pattern: (\\w+)sslTargetOverrideUrlSubstitutionExp : "${1}"urlSubstitutionExp: grpcs://org-251005746-fabric-5x6wdaow3q.tbaas.tech:8080
4. 执行以下命令:
go run main.go
成功运行可以查看到如下图输出:


6.2 tbaas-fabric-sdk-java
1. 下载 tbaas-fabric-sdk-java。
2. 按照 Readme 文档安装 jar 包。
3. 将 eccDemo.java 示例代码中的 wallet, identity, network, username 和 contract 进行相应修改。
4. 更新配置 yml 文件中相关的内容:
name: test-netversion: 1.0.0client:# 客户端默认使用的组织organization: org-251005746logging:# sdk日志级别level: infotlsCerts:client:# 用户TLS私钥路径key:path: src/main/resources/crypto-config/eccUser/user_ecc_tls.key# 用户TLS证书路径cert:path: src/main/resources/crypto-config/eccUser/user_tls.crt# 通道信息channels:# 通道名channel-9xjcb2:# peer节点列表peers:# peer节点名peer1-org-251005746.fabric-5x6wdaow3q:endorsingPeer: truechaincodeQuery: trueledgerQuery: trueeventSource: true# orderer节点列表orderers:- orderer1-org-251005746.fabric-5x6wdaow3q# 组织信息organizations:# 组织名org-251005746:# 组织mspId,形式为${orgName}MSP-${clusterId},orgName为组织名,clusterId为网络IDmspid: org-251005746.fabric-5x6wdaow3q# 该组织下的节点列表peers:- peer1-org-251005746.fabric-5x6wdaow3q# 组织用户users:# 用户名eccUser:# 用户私钥路径key:path: src/main/resources/crypto-config/eccUser/user_ecc_sign.key# 用户证书路径cert:path: src/main/resources/crypto-config/eccUser/user_sign.crt# 节点信息peers:# peer节点名peer1-org-251005746.fabric-5x6wdaow3q:# peer节点urlurl: grpcs://org-251005746-fabric-5x6wdaow3q.tbaas.tech:8080grpcOptions:# peer节点TLS中的SNI,使用节点名hostnameOverride: peer1-org-251005746.fabric-5x6wdaow3q# TLS CA证书路径tlsCACerts:path: src/main/resources/crypto-config/eccUser/ca.crt# 节点信息orderers:# peer节点名orderer1-org-251005746.fabric-5x6wdaow3q:# peer节点urlurl: grpcs://org-251005746-fabric-5x6wdaow3q.tbaas.tech:8080grpcOptions:# peer节点TLS中的SNI,使用节点名hostnameOverride: orderer1-org-251005746.fabric-5x6wdaow3q# TLS CA证书路径tlsCACerts:path: src/main/resources/crypto-config/eccUser/ca.crtentityMatchers:peer:- pattern: (\\w*)peer1-org-251005746.fabric-5x6wdaow3q(\\w*)mappedHost: peer1-org-251005746.fabric-5x6wdaow3q- pattern: (\\w+)sslTargetOverrideUrlSubstitutionExp: "${1}"urlSubstitutionExp: grpcs://org-251005746-fabric-5x6wdaow3q.tbaas.tech:8080orderer:- pattern: (\\w+)sslTargetOverrideUrlSubstitutionExp : "${1}"urlSubstitutionExp: grpcs://org-251005746-fabric-5x6wdaow3q.tbaas.tech:8080
5. 运行 eccDemo.java。
6. 成功运行可以查看到输出为:"交易后:20"。