fabric-sdk-py学习

1、安装链码

import asyncio
from hfc.fabric import Client
import os

loop = asyncio.get_event_loop()

cli = Client(net_profile="/home/zhangzhang/network.json")
org1_admin = cli.get_user('org1.example.com', 'Admin')

# 告知客户端当前加入的链码id
cli.new_channel('mychannel')

gopath_bak = os.environ.get('GOPATH', '')
gopath = os.path.normpath(os.path.join(
                      os.path.dirname(os.path.realpath('__file__')),
                      '/root/project/chaincode'
                     ))
os.environ['GOPATH'] = os.path.abspath(gopath)

# 安装链码,若成功返回true
responses = loop.run_until_complete(cli.chaincode_install(
               requestor=org1_admin,
               peers=['peer0.org1.example.com',
                      'peer1.org1.example.com'],
               cc_path='github.com/task_cc',
               cc_name='task_cc',
               cc_version='v1.0'
               ))

注意链码路径,我的完整路径:
/root/project/chaincode/src/github.com/task_cc/task.cc.go
/src/github.com必须要有,否则报错

在Linux下打开终端,输入

peer chaincode list --installed

查询已安装的链码
在这里插入图片描述
2、实例化链码

import asyncio
from hfc.fabric import Client

loop = asyncio.get_event_loop()

cli = Client(net_profile="/home/zhangzhang/network.json")
org1_admin = cli.get_user(org_name='org1.example.com', name='Admin')
cli.new_channel('mychannel')

# 背书策略
policy = {
    'identities': [
        {'role': {'name': 'member', 'mspId': 'Org1MSP'}},
    ],
    'policy': {
        '1-of': [
            {'signed-by': 0},
        ]
    }
}

# 实例化的参数
# 实例化链码传入的参数为空,与链码中init()函数对应
args = []

# 下面函数会调用链码中的init函数进行实例化
responses = loop.run_until_complete(cli.chaincode_instantiate(
    requestor=org1_admin,
    channel_name='mychannel',  # 通道的名称
    peers=['peer0.org1.example.com'],  # 指定在哪个peer上进行实例化,一个链码仅需在某个pee节点实例化一次即可
    args=args,
    cc_name='task_cc',  # 链码的名称
    cc_version='v1.0',  # 链码的版本
    cc_endorsement_policy=policy,  # 当前链码所使用的背书策略
    collections_config=None,
    transient_map=None,
    wait_for_event=True  # 确保链码实例化成功
))

print(responses)

输出
在这里插入图片描述
实例化链码时,注意传入的参数args与所写的链码中init函数的参数一致,并且注意loop.run_until_complete函数内的字段与上面安装链码时一致

在Linux下打开终端,输入

peer chaincode list --instantiated -C mychannel

查询已初始化的链码
在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值