Hyperledger-fabric服务端开发
这篇文章并不是介绍fabric智能合约怎么编写的,因为这类的文章随便在google上一搜一大把. 但反而是fabric服务端开发应该怎么做需要有人稍稍点拨一下。本文就以golang服务端为例,介绍一下fabric服务端基本做法。
fabric-sdk-go
fabric目前主要提供了node
和go
的SDK,我们将以fabric-sdk-go为例搭建一个简单服务端程序。
首先安装fabric开发基础库:
1 2 3 4 5 6 7 |
|
准备基础配置文件
首先准备一份客户端连接的配置文件,配置连接orderer、peer节点,证书路径等信息:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 |
|
初始化sdk
使用github.com/hyperledger/fabric-sdk-go/pkg/core/config
包读取并解析配置文件,加载完成后即可初始化sdk
1 2 3 4 5 6 7 8 |
|
初始化通道
初始化channelContext及channel,至此初始化工作完成,可以操作chain code或者查询账本。
1 2 3 4 5 6 7 8 |
|
操作ChainCode
以官方example02的chain code(代币转移合约)为例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
完整示例
完整示例很简单,包含代币转让及查询、底层账本查询(对应fabric1.1,BYFN示例网络)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
|
其他官方示例
- E2E Test: Basic example that uses SDK to query and execute transaction
- Ledger Query Test: Basic example that uses SDK to query a channel’s underlying ledger
- Multi Org Test: An example that has multiple organisations involved in transaction
- Dynamic Endorser Selection: An example that uses dynamic endorser selection (based on chaincode policy)
- E2E PKCS11 Test: E2E Test using a PKCS11 crypto suite and configuration
- CLI: An example CLI for Fabric built with the Go SDK.