fabric链码Python开发包怎么用

发布时间:2021-12-29 09:00:46 作者:小新
来源:亿速云 阅读:190

这篇文章主要介绍fabric链码Python开发包怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

Fabric-chaincode-python 开发包适用于Hyperledger Fabric区块链Python链码的开发,支持Fabric 1.4和2.0,官方下载地址:http://sc.hubwiz.com/codebag/fabric-chaincode-python/。

1、开发包概述

Fabric-chaincode-ptyon开发包主要包含以下特性:

Fabric-chaincode-python开发包运行在**Python 3.7+**环境下,当前版本1.0.0,主要类/接口及关系如下图所示:

fabric链码Python开发包怎么用

Fabric-chaincode-python开发包的主要代码文件清单参见官网说明:http://sc.hubwiz.com/codebag/fabric-chaincode-python/

2、用Wiz工具箱快速启动Fabric网络

Wiz工具箱可以快速搭建一个简单的Fabric网络作为链码和应用开发环境,该网络中仅包含单一的peer节点和orderer节点,主要特征如下:

启动Fabric网络需要使用三个终端,并分别为这三个终端设置wiz工具箱的环境变量:

~/fabric-chaincode-python$ source wiz_env.sh

STEP 1:在1#终端创建一个新目录devnet用来初始化一个fabric项目:

~/fabric-chaincode-python$ mkdir devnet && cd devnet
~/fabric-chaincode-python/devnet$ wiz init

结果如下:

fabric链码Python开发包怎么用

STEP 2:在1#终端使用wiz net reset初始化Fabric网络的密码学资料和通道初始化交易资料:

~/fabric-chaincode-python/devnet$ wiz net reset

结果如下:

fabric链码Python开发包怎么用

STEP 3:在1#终端使用wiz net start启动Fabric网络的peer节点和orderer节点:

~/fabric-chaincode-python/devnet$ wiz net start

结果如下:

fabric链码Python开发包怎么用

STEP 4:在2#终端使用wiz cc start启动wiz工具箱预置的Python链码:

~/fabric-chaincode-python/devnet$ wiz cc start

结果如下:

fabric链码Python开发包怎么用

STEP 5:在3#终端使用wiz ch start命令创建通道ch2并将peer节点加入通道:

~/fabric-chaincode-python/devnet$ wiz ch start

结果如下:

fabric链码Python开发包怎么用

测试链码:在3#终端使用wiz admin命令进入管理控制台:

~/fabric-chaincode-python/devnet$ wiz admin

结果如下:

fabric链码Python开发包怎么用

使用peer chaincode query命令测试预置链码的查询:

admin@org1> peer chaincode query -n wizcc -c '{"args":[]}' -C ch2

结果如下:

fabric链码Python开发包怎么用

使用peer chaincode invoke命令测试预置链码的交易:

admin@org1> peer chaincode invoke -n wizcc -c '{"args":[]}' -C ch2

结果如下:

fabric链码Python开发包怎么用

3、运行开发包中的演示Python链码

在Hyperledger Fabric网络启动之后,我们就可以使用预置的演示链码直接替换devnet中的链码。

例如,要运行token_demo.py示例,首先在2#终端按ctrl+c停止wiz预置链码的运行,然后进入fabric-chaincode-python根目录执行演示链码即可:

~/fabric-chaincode-python$ python3 token_demo.py

在3#终端的管理控制台测试余额查询和转账:

admin@org1> peer chaincode query -n wizcc -c '{"args":["balance","tommy"]}' -C ch2
admin@org1> peer chaincode invoke -n wizcc  -c '{"args":["transfer","tommy","jerry","10"]}' -C ch2

4、Python链码开发示例

下面的Python代码使用Fabric-chaincode-python实现了一个简单代币的发行、转账与余额查询,说明详见注释部分:

from fabric_shim import Shim                                  #引入fabric_shim 

class TokenChaincode:                                         #定义链码
  async def init(self,stub):                                  #链码初始化处理
    await stub.put_state('tommy',b'1000')                     #向tommy发行1000代币
    await stub.put_state('jerry',b'1000')                     #向jerry发行1000代币
    return Shim.success(b'init ok')                           #返回成功信息

  async def invoke(self,stub):                                #链码交易处理
    fcn, args = stub.get_function_and_parameters()            #获取链码调用方法名和参数列表  
    
    if fcn == 'reset':                                        #根据方法名进行路由
      return await self.init(stub)  
    if fcn == 'balance':
      return await self.balance(stub,args[0])
    if fcn == 'transfer':
      return await self.transfer(stub,args[0],args[1],args[2])
      
    return Shim.error(b'method not supported')                #未知的方法名返回错误信息

  async def balance(self,stub,account):                       #账户余额查询方法
    value = await stub.get_state(account)                     #从账本读取余额
    return Shim.success(b'balance => ' + value)               #返回余额信息

  async def transfer(self,stub,owner,to,value):               #代币转账方法
    value = int(value)
    owner_balance = await stub.get_state(owner)
    owner_balance = int(owner_balance) - value                #扣除转出方余额
    to_balance = await stub.get_state(to)
    to_balance = int(to_balance) + value                      #增加转入放余额
    await stub.put_state(owner,                               #更新转出方状态
        bytes(str(owner_balance),'utf-8')) 
    await stub.put_state(to,bytes(str(to_balance),'utf-8'))   #更新转入方状态
    return Shim.success(b'transfer ok')                       #返回成功信息  

Shim.start( TokenChaincode() )                                #启动链码

5、Python链码开发包API清单

Shim的主要API清单如下:

ChaincodeSupportClient的主要API清单如下:

ChaincodeStub的主要API清单如下:

以上是“fabric链码Python开发包怎么用”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. Hyperledger Fabric 链码(智能合约)基本操作
  2. Hyperledger Fabric服务启动与链码测试

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

fabric python

上一篇:docker如何创建持续部署流水线

下一篇:Python如何处理运动员信息的分组与聚合

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》