1、安装docker
#curl -fsSL https://get.docker.com/ | sh
#service docker start
#service docker status
安装加速器
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://88b7691f.m.daocloud.io
安装docker
curl -sSL https://get.daocloud.io/docker | sh
设置随机启动
systemctl enable docker
安装docker-compose
#curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
2、下载镜像
docker pull hyperledger/fabric-baseimage:x86_64-0.2.1
docker pull hyperledger/fabric-membersrvc:latest
docker pull hyperledger/fabric-peer:latest
3、启动集群
git clone https://github.com/yeasy/docker-compose-files
docker-compose-files/hyperledger/0.6/pbft
docker-compose -f 4-peers-with-membersrvc.yml up|down
4、测试
docker exec -it pbft_vp0_1 bash
root@vp0:/opt/gopath/src/github.com/hyperledger/fabric# peer network login jim -p 6avZQLwcUe9b
09:41:09.300 [networkCmd] networkLogin -> INFO 001 CLI client login...
09:41:09.300 [networkCmd] networkLogin -> INFO 002 Local data store for client loginToken: /var/hyperledger/production/client/
Enter password for user 'jim': ************
09:41:17.217 [networkCmd] networkLogin -> INFO 003 Logging in user 'jim' on CLI interface...
09:41:17.326 [networkCmd] networkLogin -> INFO 004 Storing login token for user 'jim'.
09:41:17.326 [networkCmd] networkLogin -> INFO 005 Login successful for user 'jim'.
09:41:17.326 [main] main -> INFO 006 Exiting.....
5、部署链码
cd /opt/gopath/src/github.com/hyperledger/fabric/examples/chaincode/go
mkdir chaincode_example06
cd chaincode_example06
wget https://raw.githubusercontent.com/IBM-Blockchain/learn-chaincode/master/finished/chaincode_finished.go
mv chaincode_finished.go chaincode_example06.go
peer chaincode deploy -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example06 -c '{"Function":"init","Args":["ancun"]}' -u jim
09:46:38.363 [chaincodeCmd] getChaincodeSpecification -> INFO 001 Local user 'jim' is already logged in. Retrieving login token.
09:46:41.898 [chaincodeCmd] chaincodeDeploy -> INFO 002 Deploy result: type:GOLANG chaincodeID:<path:"github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example06" name:"a551e00fec9b30a1d47996cf50fe45d82e045d5f40c3ea1f3e5559bdda8a9f23b6e2d3d07c772e50e69b1f00628a883f2f658369d5619f82c01f79d1c6ce2cff" > ctorMsg:<args:"init" args:"ancun" >
Deploy chaincode: a551e00fec9b30a1d47996cf50fe45d82e045d5f40c3ea1f3e5559bdda8a9f23b6e2d3d07c772e50e69b1f00628a883f2f658369d5619f82c01f79d1c6ce2cff
09:46:41.899 [main] main -> INFO 003 Exiting.....
6、执行调用
POST http://xx.xx.xx.xx:7050/chaincode
{
"jsonrpc": "2.0",
"method": "invoke",
"params": {
"type": 1,
"chaincodeID": {
"name": "上一步返回的链码ID"
},
"ctorMsg": {
"function": "write",
"args": [
"hash",
"xyz"
]
},
"secureContext": "jim"
},
"id": 2
}
这里通过调用 write 函数写入 key=hash,value=xyz。
示例响应内容:
{
"jsonrpc": "2.0",
"result": {
"status": "OK",
"message": "73304d46-5677-4ba9-9020-02f618a494d4"
},
"id": 2
}
7、查询
{
"jsonrpc": "2.0",
"method": "query",
"params": {
"type": 1,
"chaincodeID": {
"name": "上一步返回的链码ID"
},
"ctorMsg": {
"function": "read",
"args": [
"hash"
]
},
"secureContext": "jim"
},
"id": 0
}
示例响应:
{
"jsonrpc": "2.0",
"result": {
"status": "OK",
"message": "xyz"
},
"id": 0
}
更多使用方法,可以参考
API 文档。
##############################################################
########### Python客户端 #########
##############################################################
yum -y install python-pip
No package python-pip available.
Error: Nothing to do
说没有python-pip软件包可以安装。
这是因为像centos这类衍生出来的发行版,他们的源有时候内容更新的比较滞后,或者说有时候一些扩展的源根本就没有。
所以在使用yum来search python-pip的时候,会说没有找到该软件包。因此为了能够安装这些包,需要先安装扩展源EPEL。
yum -y install epel-release
安装完之后别忘了清除一下cache
yum clean all
pip --version
pip install --upgrade pip
1、First you need to import the hyperledger client and create one instance.
>>> from hyperledger.client import Client
>>> c = Client(base_url="http://127.0.0.1:7050")
Params:
base_url (str): Refers to the protocol+hostname+port where the Hyperledger service listening on.
version (str): The version of the API the client will use.
timeout (int): The HTTP request timeout, in seconds. Default to DEFAULT_TIMEOUT_SECONDS.
tls (bool): Whether to use tls. Default to False.
2、chaincode_deploy
>>> from hyperledger.client import Client
>>> c = Client(base_url="http://127.0.0.1:7050")
>>> c.chaincode_deploy(chaincode_path="github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02", function="init", args=["a","1000","b","2000"], secure_context="jim")
{u'jsonrpc': u'2.0', u'result': {u'status': u'OK', u'message': u'04233c6dd8364b9f0749882eb6d1b50992b942aa0a664182946f411ab46802a88574932ccd75f8c75e780036e363d52dd56ccadc2bfde95709fc39148d76f050'}, u'id': 1}
Params
chaincode_path (str): path to the chaincode. Default to DEFAULT_CHAINCODE_PATH.
type (int): chaincode language type: 1 for golang, 2 for node. Default to CHAINCODE_LANG_GO.
function (str): chaincode function name. Default to DEFAULT_CHAINCODE_INIT_FUNC
args (str): chaincode function args. Default to DEFAULT_CHAINCODE_INIT_ARGS.
id (int): JSON-RPC requires this value for a response. Default to 1.
secure_context (str): secure context if enable authentication. Default to None.
confidentiality_level (int): level of confidentiality. Default to CHAINCODE_CONFIDENTIAL_PUB.
metadata (str): Metadata by client.
3、chaincode_query
>>> c.chaincode_query(chaincode_name="04233c6dd8364b9f0749882eb6d1b50992b942aa0a664182946f411ab46802a88574932ccd75f8c75e780036e363d52dd56ccadc2bfde95709fc39148d76f050", function="query", args=["a"], secure_context="jim")
{u'jsonrpc': u'2.0', u'result': {u'status': u'OK', u'message': u'1000'}, u'id': 1}
Params
chaincode_name (str): Name of the chaincode. Usually returned by the deploy API.
type (int): chaincode language type: 1 for golang, 2 for node. Default to CHAINCODE_LANG_GO.
function (str): chaincode function name. Default to DEFAULT_CHAINCODE_INIT_FUNC
args (str): chaincode function args. Default to DEFAULT_CHAINCODE_INIT_ARGS.
id (int): JSON-RPC requires this value for a response. Default to 1.
secure_context (str): secure context if enable authentication. Default to None.
confidentiality_level (int): level of confidentiality. Default to CHAINCODE_CONFIDENTIAL_PUB.
metadata (str): Metadata by client.
4、chaincode_invoke
c.chaincode_invoke(chaincode_name="04233c6dd8364b9f0749882eb6d1b50992b942aa0a664182946f411ab46802a88574932ccd75f8c75e780036e363d52dd56ccadc2bfde95709fc39148d76f050", function="invoke", args=["a","b","10"], secure_context="jim")
{u'jsonrpc': u'2.0', u'result': {u'status': u'OK', u'message': u'df4a7dfd-67c0-43c0-90bd-be383d354faf'}, u'id': 1}
Params
chaincode_name (str): Name of the chaincode. Usually returned by the deploy API.
type (int): chaincode language type: 1 for golang, 2 for node. Default to CHAINCODE_LANG_GO.
function (str): chaincode function name. Default to DEFAULT_CHAINCODE_INIT_FUNC
args (str): chaincode function args. Default to DEFAULT_CHAINCODE_INIT_ARGS.
id (int): JSON-RPC requires this value for a response. Default to 1.
secure_context (str): secure context if enable authentication. Default to None.
confidentiality_level (int): level of confidentiality. Default to CHAINCODE_CONFIDENTIAL_PUB.
metadata (str): Metadata by client.
- 大小: 70.5 KB
- 大小: 11 KB
分享到:
相关推荐
### 手把手教你在Ubuntu 16.04.1系统下搭建超级...通过以上步骤,你就可以在Ubuntu 16.04.1系统上成功搭建Hyperledger Fabric 0.6的本地开发环境了。接下来,你可以开始探索Hyperledger Fabric的功能并进行开发工作。
Hyperledger Fabric 搭建 mac and centos7 压缩包包含 1.boot2docker.iso version:17.09.1-ce 2.fabric 官方例子 3.mac and centos7 一键安装脚本
Fabric_code_explain_0.6 项目研究内容 本项目是一个代码解析项目,主要解析fabric的几大模块以及整个项目的架构,本项目主要研究一下几个问题 hypledger fabric的安全机制以及证书体系 Hyperledger fabric的共识...
hyperledger是fabric0.6版本的代码,其中共识中的代码均等加入详细的注释; learning是整理的逻辑流程图,主从中断交互的顺序图和调用过程说明文档,读者可以参照文档和顺序图阅读源码; paper是PBFT99年短论文,...
只需选择下面的分支,然后使用该分支的说明即可完成本教程版本和支持的平台 Hyperledger Fabric v0.5-开发人员-预览IBM Bluemix区块链服务v0.4.2 Hyperledger Fabric v0.6-开发人员-预览IBM Bluemix区块链服务v...
Hyperledger 源码分析之 Fabric 0.6.8 区块链技术是计算机与金融技术成功交融的一大创新,被认为是极具潜力的分布式账本平台的核心技术。如果你还不了解区块链,可以阅读 。 作为 Linux 基金会支持的开源分布式账本...
您或许听说过区块链,但可能不...我将分步展示如何使用 Hyperledger Fabric v0.6 来构建、运行和执行使用 Java 语言编写的智能合约或链代码。您将安装一些工具,定义本地区块链网络,构建并运行一个链代码智能合约。
您或许听说过区块链,但可能不...我将分步展示如何使用 Hyperledger Fabric v0.6 来构建、运行和执行使用 Java 语言编写的智能合约或链代码。您将安装一些工具,定义本地区块链网络,构建并运行一个链代码智能合约。
fabric的教程都是基于0.6或者1.0等比较老的版本, 主要采用go语言开发chaincode, 采用java-sdk去调用链码. 从fabirc1.1开始,官方推荐使用nodejs去开发链码,node-sdk调用代码. 传智播客物联网+区块链学院带您使用...
注意:这是一个旧的PoC项目,不再使用它,因为它使用的是旧的和专有的Hyperledger Fabric版本(v0.6) 要开始演示: 需要供应chaincode GO代码,首先创建文件夹,然后转到那里: mkdir -p chaincode/agrifood/...
这一篇可能对前面的环境搭建会写的有些粗略,如有疑问,可阅读上一篇V0.6版本的环境搭建详细步骤。 一.环境准备 云服务器(CentOS7.2) Go语言环境 docker安装 docker-compose安装 二.环境搭建 2.1 更新yum 保证我们...
手把手教你hyperledger fabirc v1.1网上大多数超级分类帐结构的教程都是基于0.6或1.0等比较老的版本,主要采用go语言开发链代码,采用java-sdk去调用链代码。从fabirc1.1开始,官方推荐使用nodejs去开发链码,node-...
3)发布交易证书(TCerts),在Hyperledger Fabric blockchain上进行交易时提供匿名性和不可链接性;4)证书更新和撤销。Fabric CA包含一个client端和一个server端。在Fabric 1.0版本中,CA可以脱离Docker镜像,作为...