开发指南

对接 v1.2.0网络

最近更新时间:2022-06-20 14:56:00

本文为您介绍如何使用长安链 SDK 对接 v1.2.0 版本的长安链网络,长安链网络版本可以从 区块链网络概览页 右下角的网络配置信息中查看。

下载 SDK

下载 chainmaker-sdk-go-demo,压缩包主要包含以下内容:

  • chainmaker-sdk-demo:目录。
    • config:目录,存放 SDK 配置文件,后续证书也可放置在该目录下。
      • config.yml:SDK 配置文件。
    • wasmevm:目录,为 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:
  # 链 ID
  chain_id: "chain_txtxt"
  # 组织 ID
  org_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 hostname
      tls_host_name: "common1-orgtxtxtxt.chainmaker-txtxtxtxtx"

获取访问地址和链 ID

  1. 登录 TBaaS 控制台
  2. 选择左侧导航栏中的长安链 > 区块链网络,进入“区块链网络”页面。
  3. 在“区块链网络”页面中,选择需查看的网络,单击管理进入“网络概览”页面。
  4. 在“网络基础信息”模块找到链 ID 和外网域名,分别填写到配置文件的 chain_idnode_addr 字段。

获取组织 ID

  1. 单击组织与节点页签,进入“组织与节点”页面。
  2. 找到当前组织 ID 信息,填写到配置文件的 org_id 字段。如下图所示:

获取节点名称

  1. 在“组织与节点”页面单击节点管理,进入“节点管理”页面。
  2. 找到当前组织的节点列表,选择一个节点并复制节点名称,填写到配置文件的 tls_host_name 字段。如下图所示:

申请证书

  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. 在“证书管理”界面添加申请证书,填写证书标识,并上传 user_ecc_sign.csruser_ecc_tls.csr。如下图所示:

  4. 申请成功后可以单击下载下载对应证书,压缩包包含如下文件:

    • ca.crt:组织根证书。
    • user_sign.crt:用户证书。
    • user_tls.crt:用户 tls 证书。
  5. 将三个证书 ca.crtuser_sign.crtuser_tls.crt 和两个私钥 user_ecc_sign.keyuser_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
    • 初始化参数(选填):保存为空。
  3. 部署成功后,合约列表将会展示刚刚部署的合约。如下图所示:

部署 solidity 合约

  1. 单击合约管理页签,进入“合约管理”页面
  2. 根据 合约调用 (Solidity),将下载的证书文件 user_sign.crt 转换为 EVM 地址,并根据该 EVM 地址生成合约初始化参数的 ABI 编码
  3. 使用压缩包内的 token.bin 上传,并且进行如下配置:
    • 合约名称:填写 token
    • 版本号:填写 v1.0
    • 执行环境:选择 Solidity
    • 初始化参数(选填):key 为 data,value 为 hex 格式的 ABI 编码。
  4. 部署成功后,合约列表将会展示刚刚部署的合约。如下图所示:

运行 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
    成功运行可以查看到如下图输出:

运行 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
    成功运行可以查看到如下图输出:

更多对接方式

长安链提供了多种语言的 SDK,包括 Go SDK、Java SDK 等,方便开发者根据需求进行选用。更多详情请参见 长安链 SDK 开发指南

目录