共计 4966 个字符,预计需要花费 13 分钟才能阅读完成。
简介
IBM Bluemix (http://www.ibm.com/bluemix)是一个基于 cloud 的应用开发和部署平台,提供包括多种服务和运行环境的支持。对 Hyperledger 应用开发者而言,IBM Bluemix 提供免费的入门级区块运行环境。本文介绍了在 IBM Bluemix 上部署 Hyperledger 应用的基本过程。
第一步:在 Bluemix 中选择区块服务
登录 Bluemix 后,在 Catalog 页面中选择 Application Services 下的 Blochain 服务。
确认区块服务的名称,然后点击 Create 按钮以创建区块服务。
在新建的区块服务页面上点击 LAUNCH 按钮以启动区块服务,并显示其具体信息。
第二步:在 Bluemix 区块服务中注册用户
首先在区块服务页面中选择 APIs
,然后展开 Network's Enroll IDs
列表以获取预置的用户名和密码列表。
然后向选定的区块节点发送如下请求以注册用户
POST https://e1bb641577f249a88acca04da0272249-vp3.us.blockchain.ibm.com:444/registrar
Content-Type: application/json
{"enrollId": "admin",
"enrollSecret": "19725f3d88"
}
注册成功的响应为
{"OK": "Login successful for user'admin'."
}
第三步:在 Bluemix 区块服务中发布应用代码,前提是应用的 GoLang 代码必须在 github.com 上。
POST https://e1bb641577f249a88acca04da0272249-vp3.us.blockchain.ibm.com:444/chaincode
Content-Type: application/json
{"jsonrpc": "2.0",
"method": "deploy",
"params": {"type": 1,
"chaincodeID": {"path": "https://github.com/huyouhengbc/Hyperledger/HelloWorld"
},
"ctorMsg": {"function": "init",
"args": []},
"secureContext": "admin"
},
"id": 1
}
发布成功的响应为
{"jsonrpc": "2.0",
"result": {"status": "OK",
"message": "e2623e76371a16ca86d97bfb90bdab95885939bf4f2fa40133d65bca4aace27eaf94d8cd10438b80de097442916f6bfef87fb45a6cd678e3cb6ec0bd8dd008c2"
},
"id": 1
}
第四步:测试应用代码,
Query 请求
POST https://e1bb641577f249a88acca04da0272249-vp3.us.blockchain.ibm.com:444/chaincode
Content-Type: application/json
{"jsonrpc": "2.0",
"method": "query",
"params": {"type": 1,
"chaincodeID": {"name": "e2623e76371a16ca86d97bfb90bdab95885939bf4f2fa40133d65bca4aace27eaf94d8cd10438b80de097442916f6bfef87fb45a6cd678e3cb6ec0bd8dd008c2"
},
"ctorMsg": {"function": "hello",
"args": []},
"secureContext": "admin"
},
"id": 3
}
Query 响应
200 OK
access-control-allow-headers: accept, content-type
Access-Control-Allow-Origin: *
Content-Type: application/json
Date: Sun, 30 Oct 2016 05:13:58 GMT
Content-Length: 73
Server: nghttpx nghttp2/1.14.0-DEV
Via: 1.1 nghttpx
X-Firefox-Spdy: h2
{"jsonrpc":"2.0","result":{"status":"OK","message":"Hello World"},"id":3}
Invoke 请求
POST https://e1bb641577f249a88acca04da0272249-vp3.us.blockchain.ibm.com:444/chaincode
Content-Type: application/json
{"jsonrpc": "2.0",
"method": "invoke",
"params": {"type": 1,
"chaincodeID": {"name": "e2623e76371a16ca86d97bfb90bdab95885939bf4f2fa40133d65bca4aace27eaf94d8cd10438b80de097442916f6bfef87fb45a6cd678e3cb6ec0bd8dd008c2"
},
"ctorMsg": {"function": "hello",
"args": []},
"secureContext": "admin"
},
"id": 3
}
Invoke 响应
200 OK
access-control-allow-headers: accept, content-type
Access-Control-Allow-Origin: *
Content-Type: application/json
Date: Sun, 30 Oct 2016 05:13:22 GMT
Content-Length: 98
Server: nghttpx nghttp2/1.14.0-DEV
Via: 1.1 nghttpx
X-Firefox-Spdy: h2
{"jsonrpc":"2.0","result":{"status":"OK","message":"d74495ff-f3d3-44ba-acc6-5fbc767bbf21"},"id":3}
后记
- 发布应用代码中的 path 指向的是 GoLang 代码所在的目录,而不是 GoLang 源码文件,错误响应如下:
POST https://e1bb641577f249a88acca04da0272249-vp0.us.blockchain.ibm.com:444/chaincode
Content-Type: application/json
{"jsonrpc": "2.0",
"method": "deploy",
"params": {"type": 1,
"chaincodeID": {"path": "https://github.com/huyouhengbc/Hyperledger/blob/master/HelloWorld/HelloWorld.go"
},
"ctorMsg": {"function": "init",
"args": []},
"secureContext": "user_type8_0"
},
"id": 1
}
-- response --
200 OK
access-control-allow-headers: accept, content-type
Access-Control-Allow-Origin: *
Content-Type: application/json
Date: Sun, 30 Oct 2016 04:00:14 GMT
Content-Length: 721
Server: nghttpx nghttp2/1.14.0-DEV
Via: 1.1 nghttpx
X-Firefox-Spdy: h2
{"jsonrpc":"2.0","error":{"code":-32001,"message":"Deployment failure","data":"Error when deploying chaincode: Error getting chaincode package bytes: Error getting code'go get'failed with error:'exit status 1'\npackage github.com/huyouhengbc/Hyperledger/blob/master/HelloWorld/HelloWorld.go: cannot find package'github.com/huyouhengbc/Hyperledger/blob/master/HelloWorld/HelloWorld.go'in any of:\n\t/usr/local/go/src/github.com/huyouhengbc/Hyperledger/blob/master/HelloWorld/HelloWorld.go (from $GOROOT)\n\t/go/_usercode_/234208637/src/github.com/huyouhengbc/Hyperledger/blob/master/HelloWorld/HelloWorld.go (from $GOPATH)\n\t/go/src/github.com/huyouhengbc/Hyperledger/blob/master/HelloWorld/HelloWorld.go\n"},"id":1}
- Bluemix 提供基于基于 Hyperledger Fabric v0.5 的服务,如果使用最新的 Hyperledger Fabric 接口, 发布应用时错误响应如下:
{"jsonrpc": "2.0",
"error": {"code": -32001,
"message": "Deployment failure",
"data": "Error when deploying chaincode: Error getting chaincode package bytes: Error getting code'go get'failed with error:'exit status 2'\n# github.com/huyouhengbc/Hyperledger/HelloWorld\n/go/_usercode_/730749822/src/github.com/huyouhengbc/Hyperledger/HelloWorld/HelloWorld.go:15: undefined: shim.ChaincodeStubInterface\n/go/_usercode_/730749822/src/github.com/huyouhengbc/Hyperledger/HelloWorld/HelloWorld.go:21: undefined: shim.ChaincodeStubInterface\n/go/_usercode_/730749822/src/github.com/huyouhengbc/Hyperledger/HelloWorld/HelloWorld.go:27: undefined: shim.ChaincodeStubInterface\n"
},
"id": 1
}
- 发布应用报错
{"jsonrpc": "2.0",
"error": {"code": -32001,
"message": "Deployment failure",
"data": "Error when deploying chaincode: Failed loading TCerts from TCA"
},
"id": 1
}
解决方法:在 Demo Chaincoded
下发布示例应用,选择 Show API details
输出中使用的节点。
总结
本文介绍了在 IBM Bluemix 上部署 Hyperledger 应用的基本过程。
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-10/136575.htm
正文完
星哥玩云-微信公众号