有奖捉虫:行业应用 & 管理与支持文档专题 HOT
注意
区块链 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"
// 组织MSPID
mspId = "org-251005746.fabric-5x6wdaow3q"
// 用户名
username = "test"
// 通道名
channelName = "channel-9xjcb2"
// 合约名
contractName = "gotest"
)
3. 更新配置 yml 文件中相关的内容:
version: 1.0.0
client:
# 客户端默认使用的组织
organization: org-251005746
logging:
# sdk日志级别
level: info
tlsCerts:
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为网络ID
mspid: 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节点url
url: grpcs://org-251005746-fabric-5x6wdaow3q.tbaas.tech:8080
grpcOptions:
# peer节点TLS中的SNI,使用节点名
ssl-target-name-override: peer1-org-251005746.fabric-5x6wdaow3q
# TLS CA证书路径
tlsCACerts:
path: config/test/ca.crt
entityMatchers:
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:8080
orderer:
- 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-net
version: 1.0.0
client:
# 客户端默认使用的组织
organization: org-251005746
logging:
# sdk日志级别
level: info
tlsCerts:
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: true
chaincodeQuery: true
ledgerQuery: true
eventSource: true
# orderer节点列表
orderers:
- orderer1-org-251005746.fabric-5x6wdaow3q
# 组织信息
organizations:
# 组织名
org-251005746:
# 组织mspId,形式为${orgName}MSP-${clusterId},orgName为组织名,clusterId为网络ID
mspid: 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节点url
url: grpcs://org-251005746-fabric-5x6wdaow3q.tbaas.tech:8080
grpcOptions:
# 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节点url
url: grpcs://org-251005746-fabric-5x6wdaow3q.tbaas.tech:8080
grpcOptions:
# peer节点TLS中的SNI,使用节点名
hostnameOverride: orderer1-org-251005746.fabric-5x6wdaow3q
# TLS CA证书路径
tlsCACerts:
path: src/main/resources/crypto-config/eccUser/ca.crt
entityMatchers:
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:8080
orderer:
- pattern: (\\w+)
sslTargetOverrideUrlSubstitutionExp : "${1}"
urlSubstitutionExp: grpcs://org-251005746-fabric-5x6wdaow3q.tbaas.tech:8080
5. 运行 eccDemo.java。
6. 成功运行可以查看到输出为:"交易后:20"。