res = client.call(to_address, contract_abi, "getall") print("call getall result:", res) #以下是查询类的接口,大部分是返回json,可以根据对fisco bcos rpc接口json格式的理解,进行字段获取和转码 ''' useful helper: int(num,16) hex -> int hex(num) : int -> hex ''' doQueryTest = False if doQueryTest: print( "\n>>---------------------------------------------------------------------" ) res = client.getNodeVersion() print( "\n>>---------------------------------------------------------------------" ) print("getClientVersion", res) print( "\n>>---------------------------------------------------------------------" ) try: res = client.getBlockNumber() print("getBlockNumber", res) except BcosError as e: print("bcos client error,", e.info()) print( "\n>>---------------------------------------------------------------------" )
from client.bcosclient import (BcosClient, BcosError) import os from eth_utils import to_checksum_address from client.datatype_parser import DatatypeParser from console_utils.console_common import print_receipt_logs_and_txoutput client = BcosClient() info = client.init() print(info) # 从文件加载abi定义 contractname = "TestStruct" contractFile = "contracts\\" + contractname + ".abi" abi_parser = DatatypeParser() abi_parser.load_abi_file(contractFile) contract_abi = abi_parser.contract_abi print(client.getNodeVersion()) #如合约未部署,用python console.py deploy TestStruct 部署一次 #或者自行定位链上既有的合约地址 #address = "0x901250d3fcb6cf282134b12acdd0f1d67f265566" address = ContractNote.get_last(contractname) print(address) res = client.call(address, contract_abi, "getUser", ["alice"]) print("call:", res) # User结构体参数示例。合约接口里的结构体,对应python的tuple数据类型 # 注:调用合约时的入参一定是个python数组,因为合约接口参数可能有一到多个 args = [("zero", 78)] res = client.sendRawTransactionGetReceipt(address, contract_abi, "addUser", args)