Python API¶
Python SDK为区块链应用开发者提供了Python API接口,主要包括:
- Python API:封装了访问FISCO BCOS 2.0+节点JSON-RPC的Python API
- 交易结构定义:定义了FISCO BCOS 2.0+的交易数据结构
- 交易输入输出解析:提供ABI、Event Log、交易输入和输出解析功能
- ChannelHandler:FISCO BCOS channel协议实现类,支持节点之间SSL加密通信
Python API:BcosClient¶
实现于client/bcosclient.py,封装了访问FISCO BCOS 2.0+节点JSON-RPC的Python API,主要接口包括:
| 接口名 | 描述 | 参数 |
|---|---|---|
| getNodeVersion | 获取区块链节点版本信息 | 无 |
| getBlockNumber | 获取最新块高 | 无 |
| getPbftView | 获取PBFT视图 | 无 |
| getSealerList | 获取共识节点列表 | 无 |
| getObserverList | 获取观察者节点列表 | 无 |
| getConsensusStatus | 获取区块链节点共识状态 | 无 |
| getSyncStatus | 获取区块链节点同步状态 | 无 |
| getPeers | 获取区块链节点的连接信息 | 无 |
| getGroupPeers | 获取指定群组的共识节点 和观察节点列表 |
无 |
| getNodeIDList | 获取节点及其连接节点的列表 | 无 |
| getGroupList | 获取节点所属群组的群组ID列表 | 无 |
| getBlockByHash | 根据区块哈希获取区块信息 | 区块哈希 |
| getBlockByNumber | 根据区块高度获取区块信息 | 区块高度 |
| getBlockHashByNumber | 根据区块高度获取区块哈希 | 区块高度 |
| getTransactionByHash | 根据交易哈希获取交易信息 | 交易哈希 |
| getTransactionByBlockHashAndIndex | 根据交易所属的区块哈希、 交易索引获取交易信息 |
交易所属的区块哈希 交易索引 |
| getTransactionByBlockNumberAndIndex | 根据交易所属的区块高度、 交易索引获取交易信息 |
交易所属的区块高度 交易索引 |
| getTransactionReceipt | 根据交易哈希获取交易回执 | 交易哈希 |
| getPendingTransactions | 获取交易池内所有未上链的交易 | 无 |
| getPendingTxSize | 获取交易池内未上链的交易数目 | 无 |
| getCode | 根据合约地址查询的合约数据 | 合约地址 |
| getTotalTransactionCount | 获取指定群组的上链交易数目 | 无 |
| getSystemConfigByKey | 获取系统配置 | 系统配置关键字 如: - tx_count_limit - tx_gas_limit |
| deploy | 部署合约 | 合约binary code |
| call | 调用合约 | 合约地址 合约abi 调用接口名称 参数列表 |
| sendRawTransaction | 发送交易 | 合约地址 合约abi 接口名 参数列表 合约binary code |
| sendRawTransactionGetReceipt | 发送交易 并获取交易执行结果 |
合约地址 合约abi接口名 参数列表 合约binary code |
Precompile Service¶
CNS¶
类名
client.precompile.cns.cns_service.CnsService
功能接口
- register_cns:注册合约名到(合约地址,合约版本)的映射到CNS系统表中
- query_cns_by_name:根据合约名查询CNS信息
- query_cns_by_nameAndVersion:根据合约名和合约名查询CNS信息
共识¶
类名
client.precompile.consensus.consensus_precompile.ConsensusPrecompile
功能接口
- addSealer:添加共识节点
- addObserver:添加观察者节点
- removeNode:将节点从群组中删除
权限控制¶
类名
client.precompile.permission.permission_service.PermissionService
功能接口
- grant: 将指定表的权限授权给用户
- revoke:收回指定用户对指定表的写权限
- list_permission: 显示对指定表有写权限的账户信息
CRUD¶
类名
client.precompile.crud.crud_service.Entry
功能接口
- create_table:创建用户表
- insert:向用户表插入记录
- update:更新用户表记录
- remove:删除用户表指定记录
- select:查询用户表指定记录
- desc: 查询用户表信息
交易结构定义:BcosTransaction¶
实现于client/bcostransaction.py,定义了FISCO BCOS 2.0+的交易数据结构:
| 字段 | 描述 |
|---|---|
| randomid | 随机数,用于交易防重 |
| gasPrice | 默认为30000000 |
| gasLimit | 交易消耗gas上限,默认为30000000 |
| blockLimit | 交易防重上限,默认为500 |
| to | 一般为合约地址 |
| value | 默认为0 |
| data | 交易数据 |
| fiscoChainId | 链ID,通过配置client_config.py加载 |
| groupId | 群组ID,通过配置client_config.py加载 |
| extraData | 附加数据,默认为空字符串 |
交易输入输出解析:DatatypeParser¶
提供ABI、Event Log、交易输入和输出解析功能,实现于client/datatype_parser.py:
| 接口 | 参数 | 描述 |
|---|---|---|
| load_abi_file | abi文件路径 | 从指定路径加载并解析ABI文件 建立函数名、selector到函数abi映射列表 |
| parse_event_logs | event log | 解析event log |
| parse_transaction_input | 交易输入 | 解析交易输入 返回交易调用的接口名、交易参数等 |
| parse_receipt_output | 交易调用的接口名 交易输出 |
解析交易输出 |
ChannelHandler¶
FISCO BCOS channel协议实现类,支持节点之间SSL加密通信,并可接收节点推送的消息,主要实现于client/channelhandler.py,channel协议编解码参考这里
合约历史查询¶
- client/contratnote.py: 采用ini配置文件格式保存合约的最新地址和历史地址,以便加载(如console命令里可以用(合约名 last)指代某个合约最新部署的地址)
日志模块¶
- client/clientlogger.py: logger定义,目前包括客户端日志和统计日志两种
- client/stattool.py 一个简单的统计数据收集和打印日志的工具类