`

Hyperledger之 Fabric0.6( 上)

 
阅读更多
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系统下搭建超级账本(Hyperledger Fabric 0.6) 本地开发环境

    ### 手把手教你在Ubuntu 16.04.1系统下搭建超级...通过以上步骤,你就可以在Ubuntu 16.04.1系统上成功搭建Hyperledger Fabric 0.6的本地开发环境了。接下来,你可以开始探索Hyperledger Fabric的功能并进行开发工作。

    Hyperledger Fabric 搭建 mac and centos7

    Hyperledger Fabric 搭建 mac and centos7 压缩包包含 1.boot2docker.iso version:17.09.1-ce 2.fabric 官方例子 3.mac and centos7 一键安装脚本

    安卓java发送qq邮件完整源码-Hyperledger-Fabric-v0.6:Hyperledgerfabric0.6代码解析

    Fabric_code_explain_0.6 项目研究内容 本项目是一个代码解析项目,主要解析fabric的几大模块以及整个项目的架构,本项目主要研究一下几个问题 hypledger fabric的安全机制以及证书体系 Hyperledger fabric的共识...

    Fabric0.6-PBFT-Learning:fabric0.6-pbft共识模块源码阅读笔记

    hyperledger是fabric0.6版本的代码,其中共识中的代码均等加入详细的注释; learning是整理的逻辑流程图,主从中断交互的顺序图和调用过程说明文档,读者可以参照文档和顺序图阅读源码; paper是PBFT99年短论文,...

    Learn-chaincode:学习如何编写chaincode。 (有关最新信息,请参见http:hyperledger-fabric.readthedocs.ioenlatestchaincode.html)

    只需选择下面的分支,然后使用该分支的说明即可完成本教程版本和支持的平台 Hyperledger Fabric v0.5-开发人员-预览IBM Bluemix区块链服务v0.4.2 Hyperledger Fabric v0.6-开发人员-预览IBM Bluemix区块链服务v...

    hyperledger_code_fabric:Hyperledger Fabric项目的代码分析

    Hyperledger 源码分析之 Fabric 0.6.8 区块链技术是计算机与金融技术成功交融的一大创新,被认为是极具潜力的分布式账本平台的核心技术。如果你还不了解区块链,可以阅读 。 作为 Linux 基金会支持的开源分布式账本...

    fabric-master.zip

    您或许听说过区块链,但可能不...我将分步展示如何使用 Hyperledger Fabric v0.6 来构建、运行和执行使用 Java 语言编写的智能合约或链代码。您将安装一些工具,定义本地区块链网络,构建并运行一个链代码智能合约。

    fabric-sdk-java-master.zip

    您或许听说过区块链,但可能不...我将分步展示如何使用 Hyperledger Fabric v0.6 来构建、运行和执行使用 Java 语言编写的智能合约或链代码。您将安装一些工具,定义本地区块链网络,构建并运行一个链代码智能合约。

    阿里云javasdk源码-hyperledger:区块链3.0->超级账本hyperledgerfabirc教程v1.1

    fabric的教程都是基于0.6或者1.0等比较老的版本, 主要采用go语言开发chaincode, 采用java-sdk去调用链码. 从fabirc1.1开始,官方推荐使用nodejs去开发链码,node-sdk调用代码. 传智播客物联网+区块链学院带您使用...

    agrifood-blockchain

    注意:这是一个旧的PoC项目,不再使用它,因为它使用的是旧的和专有的Hyperledger Fabric版本(v0.6) 要开始演示: 需要供应chaincode GO代码,首先创建文件夹,然后转到那里: mkdir -p chaincode/agrifood/...

    区块链学习——HyperLedger-Fabric v1.0环境搭建详细过程

    这一篇可能对前面的环境搭建会写的有些粗略,如有疑问,可阅读上一篇V0.6版本的环境搭建详细步骤。 一.环境准备 云服务器(CentOS7.2) Go语言环境 docker安装 docker-compose安装 二.环境搭建 2.1 更新yum 保证我们...

    hyperledger:区块链3.0->超级账本hyperledger fabirc v1.1

    手把手教你hyperledger fabirc v1.1网上大多数超级分类帐结构的教程都是基于0.6或1.0等比较老的版本,主要采用go语言开发链代码,采用java-sdk去调用链代码。从fabirc1.1开始,官方推荐使用nodejs去开发链码,node-...

    Fabric CA 1.0 Alpha小结

    3)发布交易证书(TCerts),在Hyperledger Fabric blockchain上进行交易时提供匿名性和不可链接性;4)证书更新和撤销。Fabric CA包含一个client端和一个server端。在Fabric 1.0版本中,CA可以脱离Docker镜像,作为...

Global site tag (gtag.js) - Google Analytics