下载 SDK
chainmaker-sdk-demo:目录。
config:目录,存放 SDK 配置文件,后续证书也可放置在该目录下。
config.yml:SDK 配置文件。
wasm、evm:目录,为 SDK 调用合约示例代码。
go-fact-1.2.0.wasm:文件,存证合约示例代码编译后字节码,可根据 智能合约开发(Go) 指南编译得到,通过 TBaaS 控制台上传该文件可部署该合约。
token.abi:文件,Solidity 合约示例代码编译后 abi 文件。
token.bin:文件,Solidity 合约示例代码编译后字节码,可根据 智能合约开发(Solidity) 指南编译得到,通过 TBaaS 控制台上传该文件可部署该合约。
token.sol:文件,Solidity 合约示例代码。
chainmaker-sdk-go:目录,存放长安链 Go 版本 SDK 源代码。
操作步骤
查看长安链 SDK 配置文件
长安链 SDK 配置文件 config.yml 如下所示:
chain_client:# 链 IDchain_id: "chain_txtxt"# 组织 IDorg_id: "orgtxtxtxt.chainmaker-txtxtxtxtx"# 客户端用户私钥路径user_key_file_path: "../config/user_ecc_tls.key"# 客户端用户证书路径user_crt_file_path: "../config/user_tls.crt"# 客户端用户交易签名私钥路径(若未设置,将使用 user_key_file_path)user_sign_key_file_path: "../config/user_ecc_sign.key"# 客户端用户交易签名证书路径(若未设置,将使用 user_crt_file_path)user_sign_crt_file_path: "../config/user_sign.crt"nodes:- # 节点地址,格式为:IP: 端口:连接数node_addr: "orgtxtxtxt.chainmaker-txtxtxtxtx.tbaas.tech:8080" #"外网域名:端口"# 节点连接数conn_cnt: 1# RPC 连接是否启用双向 TLS 认证enable_tls: true# 信任证书池路径,ca.crt 所在路径trust_root_paths:- "../config/"# TLS hostnametls_host_name: "common1-orgtxtxtxt.chainmaker-txtxtxtxtx"
获取访问地址和链 ID
1. 登录 TBaaS 控制台。
2. 选择左侧导航栏中的长安链 > 区块链网络,进入“区块链网络”页面。
3. 在“区块链网络”页面中,选择需查看的网络,单击管理进入“网络概览”页面。
4. 在“网络基础信息”模块找到链 ID 和外网域名,分别填写到配置文件的
chain_id
和 node_addr
字段。![](https://qcloudimg.tencent-cloud.cn/image/document/0bc47bacbdaa2708704d7b38575f5c01.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/0bc47bacbdaa2708704d7b38575f5c01.png)
获取组织 ID
1. 单击组织与节点页签,进入“组织与节点”页面。
2. 找到当前组织 ID 信息,填写到配置文件的 ![](https://qcloudimg.tencent-cloud.cn/image/document/52281c9423ab0e393b3c00f1983aa11c.png)
org_id
字段。如下图所示:
![](https://qcloudimg.tencent-cloud.cn/image/document/52281c9423ab0e393b3c00f1983aa11c.png)
获取节点名称
1. 在“组织与节点”页面单击节点管理,进入“节点管理”页面。
2. 找到当前组织的节点列表,选择一个节点并复制节点名称,填写到配置文件的 ![](https://qcloudimg.tencent-cloud.cn/image/document/30793658a0752aa55aea0ffaa378eee1.png)
tls_host_name
字段。如下图所示:
![](https://qcloudimg.tencent-cloud.cn/image/document/30793658a0752aa55aea0ffaa378eee1.png)
申请证书
1. 根据 证书申请 CSR 生成指南,生成证书 CSR 和相应私钥。
2. 以生成非国密 ECC 证书为例,运行 ecccsr.sh 脚本将会得到以下四种文件:
user_ecc_sign.key:用户证书私钥。
user_ecc_sign.csr:用于在 TBaaS 控制台 申请用户证书。
user_ecc_tls.key:用户 tls 证书私钥。
user_ecc_tls.csr:用于在 TBaaS 控制台 申请用户 tls 证书。
3. 在“证书管理”界面添加申请证书,填写证书标识,并上传 ![](https://qcloudimg.tencent-cloud.cn/image/document/d5c2e7836e5470d0b2cfde214ebdb687.png)
user_ecc_sign.csr
和 user_ecc_tls.csr
。如下图所示:
![](https://qcloudimg.tencent-cloud.cn/image/document/d5c2e7836e5470d0b2cfde214ebdb687.png)
4. 申请成功后可以单击下载下载对应证书,压缩包包含如下文件:
ca.crt:组织根证书。
user_sign.crt:用户证书。
user_tls.crt:用户 tls 证书。
![](https://qcloudimg.tencent-cloud.cn/image/document/4ae16b87d72002869d468c5cc7bc6766.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/4ae16b87d72002869d468c5cc7bc6766.png)
5. 将三个证书
ca.crt
,user_sign.crt
,user_tls.crt
和两个私钥 user_ecc_sign.key
和 user_ecc_tls.key
放置到 chainmaker-sdk-go-demo/chainmaker-sdk-demo/config
目录下。6. 根据下表,修改 SDK 配置文件 config.yml 的证书路径和 CA 路径:
参数 | 值 | 说明 |
user_key_file_path | ./config/user_ecc_tls.key | 用户 tls 证书所对应私钥 |
user_crt_file_path | ./config/user_tls.crt | 用户 tls 证书 |
user_sign_key_file_path | ./config/user_ecc_sign.key | 用户证书所对应私钥 |
user_sign_crt_file_path | ./config/user_sign.crt | 用户证书 |
trust_root_paths | ./config/ | 根 CA 证书 ca.crt 所在目录 |
部署合约
部署 wasm 合约
1. 单击合约管理页签,进入“合约管理”页面
2. 使用压缩包内的
go-fact-1.2.0.wasm
上传,并且进行如下配置:合约名称:填写
fact
。版本号:填写
v1.0
。执行环境:选择
Go
。初始化参数(选填):保存为空。
![](https://qcloudimg.tencent-cloud.cn/image/document/b7364aff1cf31d9accc5e5dc6b3f3007.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/b7364aff1cf31d9accc5e5dc6b3f3007.png)
3. 部署成功后,合约列表将会展示刚刚部署的合约。如下图所示:
![](https://qcloudimg.tencent-cloud.cn/image/document/ef895cfdbd5e06b0491ac019e39593f7.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/ef895cfdbd5e06b0491ac019e39593f7.png)
部署 solidity 合约
1. 单击合约管理页签,进入“合约管理”页面
2. 根据 合约调用 (Solidity),将下载的证书文件 user_sign.crt 转换为 EVM 地址,并根据该 EVM 地址生成合约初始化参数的 ABI 编码
3. 使用压缩包内的
token.bin
上传,并且进行如下配置:合约名称:填写
token
。版本号:填写
v1.0
。执行环境:选择
Solidity
。初始化参数(选填):key 为 data,value 为 hex 格式的 ABI 编码。
![](https://qcloudimg.tencent-cloud.cn/image/document/b7668607050d2bd649d734ad80274577.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/b7668607050d2bd649d734ad80274577.png)
4. 部署成功后,合约列表将会展示刚刚部署的合约。如下图所示:
![](https://qcloudimg.tencent-cloud.cn/image/document/3c3821b8444aa1aab4655a75c73b8aae.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/3c3821b8444aa1aab4655a75c73b8aae.png)
运行 Demo
运行 wasm 合约调用 demo
1. 进入
chainmaker-sdk-go-demo/chainmaker-sdk-demo/wasm
目录。2. 将
main.go
示例代码中的 claimContractName
修改为上述部署的合约的名字,示例如下:var (claimContractName = "fact")
3. 执行以下命令:
go run main.go ../config/config.yml
成功运行可以查看到如下图输出:
![](https://qcloudimg.tencent-cloud.cn/image/document/8d7a114d337145a89f284eb1441d3c0e.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/8d7a114d337145a89f284eb1441d3c0e.png)
运行 evm 合约调用 demo
1. 进入
chainmaker-sdk-go-demo/chainmaker-sdk-demo/evm
目录。2. 将
main.go
示例代码中的 contractName
修改为上述部署的 evm 合约的名字,示例如下:var (contractName = "token")
3. 生成另一套证书 CSR 和相应私钥,并在“证书管理”界面上申请证书,将对应的证书文件
user_sign.crt
重命名为user2_sign.crt
,并放置到 chainmaker-sdk-go-demo/chainmaker-sdk-demo/config
目录下。4. 运行
go run main.go ../config/config.yml
成功运行可以查看到如下图输出:![](https://qcloudimg.tencent-cloud.cn/image/document/9873d6968110e620f40c9b249fbb70c8.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/9873d6968110e620f40c9b249fbb70c8.png)