{"id":20626084,"url":"https://github.com/fisco-bcos/python-sdk","last_synced_at":"2026-02-20T16:31:10.842Z","repository":{"id":46294724,"uuid":"194997013","full_name":"FISCO-BCOS/python-sdk","owner":"FISCO-BCOS","description":"python sdk for FISCO BCOS","archived":false,"fork":false,"pushed_at":"2024-10-30T06:38:35.000Z","size":11452,"stargazers_count":70,"open_issues_count":0,"forks_count":62,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-05-18T03:07:01.595Z","etag":null,"topics":["client","console","python","sdk"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FISCO-BCOS.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-03T06:55:05.000Z","updated_at":"2025-05-14T16:48:19.000Z","dependencies_parsed_at":"2024-03-22T08:44:11.726Z","dependency_job_id":"40157fe5-b345-4e96-9fe5-8f5dffddcbfa","html_url":"https://github.com/FISCO-BCOS/python-sdk","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/FISCO-BCOS/python-sdk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FISCO-BCOS%2Fpython-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FISCO-BCOS%2Fpython-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FISCO-BCOS%2Fpython-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FISCO-BCOS%2Fpython-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FISCO-BCOS","download_url":"https://codeload.github.com/FISCO-BCOS/python-sdk/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FISCO-BCOS%2Fpython-sdk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29656916,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-20T09:27:29.698Z","status":"ssl_error","status_checked_at":"2026-02-20T09:26:12.373Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["client","console","python","sdk"],"created_at":"2024-11-16T13:11:53.856Z","updated_at":"2026-02-20T16:31:10.819Z","avatar_url":"https://github.com/FISCO-BCOS.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Python SDK\n\n![](./images/FISCO_BCOS_Logo.svg)\n\n\n[![Build Status](https://travis-ci.org/FISCO-BCOS/python-sdk.svg?branch=master)](https://travis-ci.org/FISCO-BCOS/python-sdk)\n[![CodeFactor](https://www.codefactor.io/repository/github/fisco-bcos/python-sdk/badge)](https://www.codefactor.io/repository/github/fisco-bcos/python-sdk)\n[![GitHub license](https://img.shields.io/github/license/FISCO-BCOS/python-sdk.svg)](https://github.com/FISCO-BCOS/python-sdk/blob/master/LICENSE)\n[![GitHub issues](https://img.shields.io/github/issues/FISCO-BCOS/python-sdk.svg)](https://github.com/FISCO-BCOS/python-sdk/issues)\n--- \n\nPython SDK为[FISCO BCOS](https://github.com/FISCO-BCOS/FISCO-BCOS/tree/master)提供Python API，使用FISCO BCOS Python SDK可以简单快捷的基于FISCO-BCOS进行区块链应用开发。\n\n2022.09版本同时支持FISCO BCOS 2.x / 3.x。与3.x相关的技术说明参见 [FISCO BCOS 3.x 开发介绍](./README_bcos3.md)\n\n**Python SDK定位为开发版本，持续迭代，供使用Python语言开发FISCO BCOS应用的开发者参考。企业级应用推荐使用 Java SDK**\n\n\n\n如需将Python SDK用于正式环境，请认真阅读和理解代码，掌握相关知识点，按自己的需求进行二次开发并**严谨测试**后上线。\n\n如有任何问题，欢迎到社区提问交流，或修改扩展提交pr，共建项目\n\n## 关键特性\n\n- 支持FISCO BCOS 3.x接口: [JSON-RPC](https://fisco-bcos-doc.readthedocs.io/zh_CN/latest/docs/develop/api.html)。对于FISCO BCOS3.x，客户端采用Python包装C语言开发的底层SDK库，由SDK库负责网络协议封装和安全通信细节。\n- 支持FISCO BCOS 2.x接口: [JSON-RPC](https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/api.html)。对于FISCO BCOS2.x，客户端基于[Channel协议](https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/design/protocol_description.html#channelmessage)与FISCO BCOS进行通信，保证节点与SDK安全加密通信的同时，可接收节点推送的消息。\n- 支持交易解析功能：包括交易输入、交易输出、Event Log等ABI数据的拼装和解析。\n- 支持合约编译，将`sol`合约编译成`abi`和`bin`文件。\n- 支持基于keystore的账户管理。支持从pem文件加载ECDSA算法的私钥，以便和其他私钥管理模块互通。\n- 支持本地的合约部署历史查询 (不支持链上所有部署的合约查询)。\n- 支持国密(SM2,SM3,SM4算法)。对于FISCO BCOS2.x如需支持国密SSL通信需要独立编译组件，参见 [cython_tassl_wrap的README](./cython_tassl_wrap)。对于FISCO BCOS 3.x,国密特性已经由底层库封装，参见FISCO BCOS 3.x 配置和库文件下载。\n- 支持event回调监听\n- 支持liquid智能合约。需要采用[liquid开发环境](https://liquid-doc.readthedocs.io/)编译wasm合约。使用python-sdk部署和调用liquid合约时，合约名带上.wasm后缀，以和sol合约区别。\n- 控制台支持Struct参数，数组等复杂数据结构，SDK调用方法参见[tests/teststructclient.py](tests/teststructclient.py)\n\n## 部署Python SDK\n\n### 环境要求\n\n- Python环境：python 3.6+ ,含 3.9.x , 3.10   \n\n (python 3.11+的语法，对依赖库有较大兼容性差异,尚未适配,后续跟踪各依赖库的兼容情况后再做适配)\n  \n- FISCO BCOS节点：请参考\n\n[FISCO BCOS 2.x节点安装](https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/installation.html#fisco-bcos)搭建\n[FISCO BCOS 3.x节点安装](https://fisco-bcos-doc.readthedocs.io/zh_CN/latest/docs/quick_start/air_installation.html)搭建\n\n\n### 依赖软件\n\n- **Ubuntu**: `sudo apt install -y zlib1g-dev libffi6 libffi-dev wget git`\n- **CentOS**：`sudo yum install -y zlib-devel libffi-devel wget git`\n- **MacOs**: `brew install wget npm git`\n\n### 初始化环境(若python环境符合要求，可跳过)\n\n#### **Linux环境初始化**\n\n\u003e 拉取源代码\n```bash\ngit clone https://github.com/FISCO-BCOS/python-sdk\n```\n\n\u003e 配置环境(安装pyenv和python，若python版本\u003e=3.6.3可跳过本步)\n```bash\n# 获取python版本\npython --version\n\n## --------若python版本小于3.6.3，执行下面流程--------------------------------------\n# 判断python版本，并为不符合条件的python环境安装python 3.7.3的虚拟环境，命名为python-sdk\n# 若python环境符合要求，可以跳过此步\n# 若脚本执行出错，请检查是否参考[依赖软件]说明安装了依赖\n# 提示：安装python-3.7.3可能耗时比较久\ncd python-sdk \u0026\u0026 bash init_env.sh -p\n\n## --------若通过bash init_env.sh -p安装了python-sdk虚拟环境，执行下面流程-------------\n# 激活python-sdk虚拟环境\nsource ~/.bashrc \u0026\u0026 pyenv activate python-sdk \u0026\u0026 pip install --upgrade pip\n```\n\n#### **Windows环境初始化**\n\n在Windows运行Python SDK，需要按照以下步骤安装依赖软件并配置合约编译器：\n\n**安装依赖软件**\n\n- 安装[Python](https://www.python.org/downloads/) .目前(2023.03)支持到3.10版本。\n\u003e 建议采用pyenv,virtualenv或其他多环境管理软件，管理不同版本的python以及其依赖库\n\n- [Visual C++ 14.0库](https://visualstudio.microsoft.com/downloads)\n\u003e (注：Microsoft Visual C++ 14.0 is required. Get it with \"Microsoft Visual C++ Build Tools\"解决方法: https://visualstudio.microsoft.com/downloads （注意选择vs 2005即14.0版）或 https://pan.baidu.com/s/1ZmDUGZjZNgFJ8D14zBu9og 提取码: zrby)\n\n- 下载Windows版本solc,参考[README_SOLC](README_SOLC.md),点击[这里](https://github.com/FISCO-BCOS/solidity/releases)下载\n\u003e 目前支持到0.6.x版本的solidity编译器\n\u003e \n\u003e solc编译器下载成功后，解压，将其中的 solc.exe 文件复制 ${python-sdk}\\bin 目录下。若 python-sdk 路为 D:\\\\open-source\\\\python-sdk, 则 solc.exe 文件复制路径为D:\\\\open-source\\\\python-sdk\\\\bin\\\\solc.exe\n\n\n**拉取源代码**\n\n打开 git，在任意目录执行如下命令\n```bash\ngit clone https://github.com/FISCO-BCOS/python-sdk\n```\n\n**配置solc编译器路径**\n```bash\n# 修改client_config.py.template: \n# 配置solc编译器路径，若solc存放路径为D:\\\\open-source\\\\python-sdk\\\\bin\\\\solc.exe，则solc_path配置如下：\nsolc_path = \"D:\\\\open-source\\\\python-sdk\\\\bin\\\\solc.exe\"\n\n# 将client_config.py.template拷贝到client_config.py\n```\n\n### **安装Python SDK依赖**\n\n```bash\ncd python-sdk \npip install -r requirements.txt\n```\n**若因网络原因，安装依赖失败，可使用清华的pip源下载，安装命令如下：**\n\n```bash\npip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt\n```\n\n**注意：目前已知parsimonious库必须采用0.8.1版本，否则在发交易时出现编码错误(提示信息类似：arg 2 type must be tuple )。**\n\n如python的site-packages里已经安装了版本高于0.8.1的parsimonious库，\n请先pip uninstall parsimonious，再pip install parsimonious==0.8.1。\n（项目代码目录已经包含了parsimonious==0.8.1的库文件,无需安装也可以）\n\n同理，**eth_abi/eth_account/eth_hash/eth_keys/eth_rlp/eth_typing/eth_utils/gmssl/hexbytes/rlp**等外部库，\n因有所改动，也在本项目内维护了一份代码，如python环境的libs库里安装了同名不同版本的冲突，同样需卸载，\n以使用本项目里内置的版本。\n\n**如出现因其他库版本依赖产生的错误，请在社区群里反馈或提issue**\n\n\nPython依赖库升级较快，且版本对齐很重要，非常建议采用pyenv,virtualenv等多环境工具，为每个python应用单独管理其依赖库环境。\n\n\n### 初始化配置(Windows环境可跳过)\n\n```bash\n# 该脚本执行操作如下：\n# 1. 拷贝client_config.py.template -\u003e client_config.py\n# 2. 安装solc编译器\nbash init_env.sh -i\n```\n\n\u003e **若MacOS环境solc安装较慢，可在python-sdk目录下执行如下命令安装solcjs**，python-sdk自动加载nodejs编译器：\n\n```bash\n# 安装编译器\nnpm install solc@v0.4.25\n```\n\n\u003e 若没有执行以上初始化步骤，需要将`contracts/`目录下的`sol`代码手动编译成`bin`和`abi`文件并放置于`contracts`目录，才可以部署和调用相应合约。\n\u003e 可以使用[solc](https://github.com/FISCO-BCOS/solidity/releases)、[WeBASE](https://webasedoc.readthedocs.io/)等兼容sol代码的编译工具和IDE环境。\n\n\n## 国密支持\n -  支持国密版本的非对称加密、签名验签(SM2), HASH算法(SM3),对称加解密(SM4)\n -  国密版本在使用上和非国密版本基本一致，主要是配置差异。\n -  国密版本sdk同一套代码可以连接国密和非国密的节点，需要根据不同的节点配置相应的IP端口和证书\n -  因为当前版本的实现里，账户文件格式有差异，所以国密的账户文件和ECDSA的账户文件采用不同的配置\n -  FISCO BCOS 2.x国密SSL目前需要手动编译，配置，方法参见 [cython_tassl_wrap的README](./cython_tassl_wrap)\n -  FISCO BCOS 3.x的国密同样由底层库支持，lib库下载已经在CDN下载提供，参见[相关连接](https://fisco-bcos-doc.readthedocs.io/zh_CN/latest/docs/develop/sdk/c_sdk/dylibs.html)\n\n连接国密节点时，有以下相关的配置项需要修改和确认，IP端口也需要确认是指向国密版本节点\n```bash\ncrypto_type = \"GM\" \t#密码算法选择: 大小写不敏感：\"GM\" 标识国密, \"ECDSA\" 或其他是椭圆曲线默认实现。\nssl_type = \"GM\" # 和节点tls通信方式，如设为gm，则使用国密证书认证和加密\ngm_account_keyfile = \"gm_account.json\"  #国密账号的存储文件，可以加密存储,如果留空则不加载\ngm_account_password = \"123456\" \t\t#如果不设密码，置为None或\"\"则不加密\ngm_solc_path = \"./bin/solc/v0.4.25/solc-gm\" #合约编译器配置，通过执行bash init_env.sh -i命令下载\n以及5个证书配置\n```\n\n## FISCO BCOS 3.x 配置和库文件下载 (连接FISCO BCOS 2.x无需关注这一段)\n\nFISCO BCOS 3.x相关配置也在client_config.py文件里，大部分和2.x的一致。\n\n只需要关注以下几个字段：\n```bash\n    # FISCO BCOS3.0的配置段，如连接FISCO BCOS2.0版本，无需关心此段\n    # FISCO BCOS3.0 c底层sdk的配置，都在bcos3_config_file里，无需配置在此文件\n    bcos3_lib_path =\"./bcos3sdklib\"\n    bcos3_config_file =\"./bcos3sdklib/bcos3_sdk_config.ini\"\n    group = \"group0\"\n```\n\n由于FISCO BCOS 3.x提供了SDK的C语言库，诸多细节封装在库里，并引入了独立的配置文件，即上面配置里的bcos3_config_file字段。\n\n**即对于FISCO BCOS 3.x版本，要修改两个配置文件:** \n\n1) client_config.py,可参考client_config.py.template创建后缀为ini的配置文件,字段说明参见文件里的注释\n\n2) bcos3_sdk_config.ini,可参考bcos3sdklib/bcos3_sdk_config.ini.template创建后缀为ini的配置文件，并将其路径配置到client_config.py** \n\n建议详细查看bcos3_sdk_config.ini,[字段的说明参见此连接](https://fisco-bcos-doc.readthedocs.io/zh-cn/latest/docs/sdk/c_sdk/config.html#id3)\n\nbcos3_sdk_config.ini配置文件可以和库文件等一起放在 bcos3sdklib目录(可参照上方的配置项修改) 。节点证书、SDK证书等文件路径、节点IP端口等信息在该文件里配置。\n\n节点证书，SDK证书等文件，到FISCO BCOS3.x的安装目录下的sdk子目录里获取，本地存放的路径与bcos3_sdk_config.ini里配置的保持一致\n\n**clog.ini** 默认放在当前目录下 ，sdk的C语言库打日志使用此配置\n\n\n**重要:**\n\n获取C语言基础库的方式\n1. 手工下载：[最新版本的C语言的SDK库文件可到文件下载连接](https://fisco-bcos-doc.readthedocs.io/zh-cn/latest/docs/sdk/c_sdk/dylibs.html),获取相应操作系统的库文件。\n如windows平台上的bcos-c-sdk.dll/lib,linux平台上的libbcos-c-sdk.so,mac平台的dylib等，且注意x86和arm64架构的库有区别。\n\n2. 使用脚本(推荐)：进入./bcos3sdklib,执行脚本**python download_c_libs.py**,将自动下载对应平台的库文件到当前目录。\n如需要下载特定版本的库文件(如3.3.0),可直接修改download_c_libs.py里的版本号变量。\n\n建议下载库文件后放到 ./bcos3sdklib 目录下（参照client_config.py里的bcos3_lib_path字段，可根据自己的部署环境实际路径修改），供python代码调用。\n\n如库名发生修改，或者带上了版本号等，有可能导致文件指向差异，可以到bcos3sdk/bcos3sdk_wrap.py里，修改libname\n```bash\nclass NativeBcos3sdk:\n    libname = \"bcos-c-sdk\"\n```\n总之，一定要能加载C语言的SDK库，才能连接FISCO BCOS3.0的节点\n\n## FISCO BCOS 2.x 配置Channel通信协议 （连接FISCO BCOS 3.x 无需关注这一段）\n\nPython SDK支持使用[Channel协议](https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/design/protocol_description.html#channelmessage-v1)与FISCO BCOS节点通信，通过SSL加密通信保障SDK与节点通信的机密性。\n\n设SDK连接的节点部署在目录`~/fisco/nodes/127.0.0.1`目录下，则通过如下步骤使用Channel协议：\n\n**配置Channel信息**\n\n在节点目录下的 config.ini 文件中获取 channel_listen_port, 这里为20200  \n```bash\n[rpc]\n    listen_ip=0.0.0.0\n    channel_listen_port=20200\n    jsonrpc_listen_port=8545\n```\n    \n切换到python-sdk目录，修改 client_config.py 文件中`channel_host`为实际的IP，`channel_port`为上步获取的`channel_listen_port`：\n\n```bash\nchannel_host = \"127.0.0.1\"\nchannel_port = 20200\n```\n\n**配置证书**\n\n```bash\n# 若节点与python-sdk位于不同机器，请将节点sdk目录下所有相关文件拷贝到bin目录\n# 若节点与sdk位于相同机器，直接拷贝节点证书到SDK配置目录\ncp ~/fisco/nodes/127.0.0.1/sdk/* bin/\n```\n\n**配置证书路径**\n\n  - `client_config.py`的`channel_node_cert`和`channel_node_key`选项分别用于配置SDK证书和私钥\n  - `release-2.1.0`版本开始，SDK证书和私钥更新为`sdk.crt`和`sdk.key`，配置证书路径前，请先检查上步拷贝的证书名和私钥名，并将`channel_node_cert`配置为SDK证书路径，将`channel_node_key`配置为SDK私钥路径\n\n检查从节点拷贝的sdk证书路径，若sdk证书和私钥路径分别为`bin/sdk.crt`和`bin/sdk.key`，则`client_config.py`中相关配置项如下：\n\n```bash\nchannel_node_cert = \"bin/sdk.crt\"  # 采用channel协议时，需要设置sdk证书,如采用rpc协议通信，这里可以留空\nchannel_node_key = \"bin/sdk.key\"   # 采用channel协议时，需要设置sdk私钥,如采用rpc协议通信，这里可以留空\n```\n\n若sdk证书和私钥路径分别为`bin/node.crt`和`bin/node.key`，则`client_config.py`中相关配置项如下:\n```bash\nchannel_node_cert = \"bin/node.crt\"  # 采用channel协议时，需要设置sdk证书,如采用rpc协议通信，这里可以留空\nchannel_node_key = \"bin/node.key\"   # 采用channel协议时，需要设置sdk私钥,如采用rpc协议通信，这里可以留空\n```\n\n\n## SDK使用简要说明\n\n基于python sdk二次开发,可使用封装好的bcos client对象。\n\n根据FISCO BCOS是2.x或3.x版本，分别封装:\n\n[client/bcosclient.py](client/bcosclient.py)对应2.x版本，其使用示例参见 [tests/testclient.py](tests/testclient.py)\n\n[bcos3sdk/bcos3client.py](bcos3sdk/bcos3client.py)对应3.x版本，其使用示例参见 [tests/testbcos3client.py](tests/testbcos3client.py)\n\n一般的使用次序\n```bash\n1.import不同版本的client对象\n2.指定配置类\n3.初始化客户端client\n4.加载合约的abi定义\n5.用call/sendRawTransaction等方法调用合约\n6.处理返回的结果\n```\n\n或者调用其他链RPC接口的额方法，如getBlockNumber等，参见客户端代码实现、以及对照FISCO BCOS不同版本的RPC接口定义即可。\n代码比较直观，直接查看示例代码即可。\n\n```bash\n注意: \n对合约的只读接口(view或constant),使用call方法，\n对合约的交易类接口，应使用sendRawTransaction/sendRawTransactionGetReceipt方法\n这里和FISCO BCOS 自带的控制台有一些不同，控制台对两种类型的合约方法都用call调用，以简化操作，\npython-sdk保留原始接口RPC的定义风格，对两种类型的方法进行区格\npython-sdk自带的控制台同理，对不同类型的方法，分别使用call或sendtx\n```\n\n## 控制台使用示例\n\n注:FISCO BCOS 3.0的控制台文件是**console3.py**,使用方法基本同FISCO BCOS 2.0，主要是查询类接口有数量上的区别\n\n具体使用信息，可输入 **python console3.py usage** 查看\n\n**查看控制台使用方法**\n\n* 注：以下示例不区分2.x和3.x的控制台，\n* 如要使用2.x的控制台，把console.py换成console2.py。\n* 如要使用3.x的控制台，把console.py换成console3.py。\n* 屏幕上的少量输入输出差异和版本有关，不做详细分解\n\n\u003e **windows环境下执行console2/3.py请使用`.\\console2/3.py`或者`python console2/3.py`**\n\n```bash\n# 查看控制台使用方法\n./console.py usage\n\n# 获取区块高度\n./console.py getBlockNumber\n```\n\n**部署HelloWorld合约**\n```bash\n$ ./console.py deploy HelloWorld  \n\nINFO \u003e\u003e user input : ['deploy', 'HelloWorld']\n\nbackup [contracts/HelloWorld.abi] to [contracts/HelloWorld.abi.20190807102912]\nbackup [contracts/HelloWorld.bin] to [contracts/HelloWorld.bin.20190807102912]\nINFO \u003e\u003e compile with solc compiler\ndeploy result  for [HelloWorld] is:\n {\n    \"blockHash\": \"0x3912605dde5f7358fee40a85a8b97ba6493848eae7766a8c317beecafb2e279d\",\n    \"blockNumber\": \"0x1\",\n    \"contractAddress\": \"0x2d1c577e41809453c50e7e5c3f57d06f3cdd90ce\",\n    \"from\": \"0x95198b93705e394a916579e048c8a32ddfb900f7\",\n    \"gasUsed\": \"0x44ab3\",\n    \"input\": \"0x6080604052...省略若干行...c6f2c20576f726c642100000000000000000000000000\",\n    \"logs\": [],\n    \"logsBloom\": \"0x000...省略若干行...0000\",\n    \"output\": \"0x\",\n    \"status\": \"0x0\",\n    \"to\": \"0x0000000000000000000000000000000000000000\",\n    \"transactionHash\": \"0xb291e9ca38b53c897340256b851764fa68a86f2a53cb14b2ecdcc332e850bb91\",\n    \"transactionIndex\": \"0x0\"\n}\non block : 1,address: 0x2d1c577e41809453c50e7e5c3f57d06f3cdd90ce \naddress save to file:  bin/contract.ini\n```\n\n**调用HelloWorld合约**\n\n```bash\n# 合约地址：0x2d1c577e41809453c50e7e5c3f57d06f3cdd90ce\n# 调用接口：get\n$./console.py  call HelloWorld 0x2d1c577e41809453c50e7e5c3f57d06f3cdd90ce get \n\nINFO \u003e\u003e user input : ['call', 'HelloWorld', '0x2d1c577e41809453c50e7e5c3f57d06f3cdd90ce', 'get']\n\nINFO \u003e\u003e call HelloWorld , address: 0x2d1c577e41809453c50e7e5c3f57d06f3cdd90ce, func: get, args:[]\nINFO \u003e\u003e call result: ('Hello, World!',)\n\n# 合约名：HelloWorld\n# 合约地址：0x2d1c577e41809453c50e7e5c3f57d06f3cdd90ce\n# 调用接口：set\n# 参数：\"Hello, FISCO\"\n$ ./console.py sendtx HelloWorld 0x2d1c577e41809453c50e7e5c3f57d06f3cdd90ce set \"Hello, FISCO\"\n\nINFO \u003e\u003e user input : ['sendtx', 'HelloWorld', '0x2d1c577e41809453c50e7e5c3f57d06f3cdd90ce', 'set', 'Hello, FISCO']\n\nINFO \u003e\u003e sendtx HelloWorld , address: 0x2d1c577e41809453c50e7e5c3f57d06f3cdd90ce, func: set, args:['Hello, FISCO']\n\nINFO \u003e\u003e  receipt logs : \nINFO \u003e\u003e transaction hash :  0xc20cbc6b0f28ad8fe1c560c8ce28c0e7eb7719a4a618a81604ac87ac46cc60f0\ntx input data detail:\n {'name': 'set', 'args': ('Hello, FISCO',), 'signature': 'set(string)'}\nreceipt output : ()\n\n# 调用get接口获取更新后字符串\n$./console.py call HelloWorld 0x2d1c577e41809453c50e7e5c3f57d06f3cdd90ce get\n\nINFO \u003e\u003e user input : ['call', 'HelloWorld', '0x42883e01ac97a3a5ef8a70c290abe0f67913964e', 'get']\n\nINFO \u003e\u003e call HelloWorld , address: 0x42883e01ac97a3a5ef8a70c290abe0f67913964e, func: get, args:[]\nINFO \u003e\u003e call result:  'Hello, FISCO!'\n```\n\n**Event事件回调**\n -  针对已经部署在链上某个地址的合约，先注册要监听的事件，当合约被交易调用，且生成事件时，节点可以向客户端推送相应的事件\n -  事件定义如有indexed类型的输入，可以指定监听某个特定值作为过滤，如事件定义为 on_set(string name,int indexed value),可以增加一个针对value的topic监听，只监听value=5的事件\n -  具体实现参考demo_event_callback.py,使用的命令行为：\n```bash\nparams: contractname address event_name indexed\n        1. contractname :       合约的文件名,不需要带sol后缀,默认在当前目录的contracts目录下\n        2. address :    十六进制的合约地址,或者可以为:last,表示采用bin/contract.ini里的记录\n        3. event_name : 可选,如不设置监听所有事件\n        4. indexed :    可选,根据event定义里的indexed字段,作为过滤条件)\n\n        eg: for contract sample [contracts/HelloEvent.sol], use cmdline:\n\n        python demo_event_callback.py HelloEvent last\n        --listen all event at all indexed ：\n\n        python demo_event_callback.py HelloEvent last on_set\n        --listen event on_set(string newname) （no indexed）：\n\n        python demo_event_callback.py HelloEvent last on_number 5\n        --listen event on_number(string name,int indexed age), age ONLY  5 ：\n\n```\n\n\n\n## 控制台输入复杂数据类型概要说明\n\n**数组**\n\n合约数组如uint256[3] nums，那么在python层面，其参数构造可以是 [1,2,3],同理，字符串数组对应['a','b','c']\n\n在控制台输入时，数组参数需要加上中括号，比如[1, 2, 3]，数组中是字符串或字节类型，加双引号或单引号，例如[“alice”, ”bob”]，注意数组参数中不要有空格；布尔类型为true或者false。\n\n**结构体**\n\n合约结构体如\n```\n    struct User {\n        string name;\n        uint256 age;\n     }\n```\n对应python的tuple类型，如 ('alice',23)\n\n如果是结构体数组 User[] _users, 则对应tuple数组如[('alice',23),('bob',28)]\n\n在控制台输入时，按以上格式输入即可。举例\n```\n单个结构体参数\npython console.py sendtx TestStruct latest addUser ('alice',23)\n\n两个参数，第二个参数是结构体\npython console.py sendtx TestStruct latest addbyname alice ('alice',23)\n\n结构体数组参数\npython console.py sendtx TestStruct latest addUsers [('alice',23),('bob',28)]\n\n查询，返回的是结构体\npython console.py call TestStruct latest getUser alice\n```\n\n在控制台输入时，不支持复杂的嵌套(数组套结构体套数组等)，也不完整支持复杂转义字符，仅供一般体验使用。\n\n开发时，可参见[tests/teststructclient.py](tests/teststructclient.py)里的实现,复杂的数据结构，按abi接口定义结合python的数据结构（array,tuple等）进行组合构造。\n\n## 开启命令行自动补全\n\nPython SDK引入[argcomplete](https://argcomplete.readthedocs.io/en/latest/)支持命令行补全，运行如下命令开启此功能(**bashrc仅需设置一次，设置之后每次登陆自动生效**)，**目前仅支持bash，不支持zsh**：\n\n```bash\necho \"eval \\\"\\$(register-python-argcomplete ./console.py)\\\"\" \u003e\u003e ~/.bashrc\nsource ~/.bashrc\n```\n\n\n## 贡献代码\n\n- 我们欢迎并非常感谢您的贡献，包括提出issue,提交代码PR,修订文档等\n- 如项目对您有帮助，欢迎star支持！\n\n\n## 加入社区\n\n**FISCO BCOS开源社区**是国内活跃的开源社区，社区长期为机构和个人开发者提供各类支持与帮助。已有来自各行业的数千名技术爱好者在研究和使用FISCO BCOS。如您对FISCO BCOS开源技术及应用感兴趣，欢迎加入社区获得更多支持与帮助。\n\n![](images/qr_code1.png)\n\n## License\n\nPython SDK的开源协议为[MIT License](https://opensource.org/licenses/MIT). 详情参考[LICENSE](./LICENSE)。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffisco-bcos%2Fpython-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffisco-bcos%2Fpython-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffisco-bcos%2Fpython-sdk/lists"}