Exemple #1
0
def fisco_add_data_demo():
    try:
        client = BcosClient()
        print(client.getinfo())

        abi_file = os.path.join(settings.SITE_ROOT, "contracts",
                                "HelloWorld.abi")
        data_parser = DatatypeParser()
        data_parser.load_abi_file(abi_file)
        contract_abi = data_parser.contract_abi

        # 发送交易,调用一个改写数据的接口
        print(
            "\n>>sendRawTransaction:----------------------------------------------------"
        )
        to_address = '0x548fd1e8af9ca9131c04ab7e1031579f6498ddaf'  # use new deploy address
        args = ["xy1211ddd"]

        receipt = client.sendRawTransactionGetReceipt(to_address, contract_abi,
                                                      "set", args)
        print("receipt:", receipt)

        # 解析receipt里的log
        print(
            "\n>>parse receipt and transaction:--------------------------------------"
        )
        tx_hash = receipt['transactionHash']
        print("transaction hash: ", tx_hash)
        log_result = data_parser.parse_event_logs(receipt["logs"])
        i = 0
        for log in log_result:
            if 'eventname' in log:
                i = i + 1
                print("{}): log name: {} , data: {}".format(
                    i, log['eventname'], log['eventdata']))
        # 获取对应的交易数据,解析出调用方法名和参数

        tx_response = client.getTransactionByHash(tx_hash)
        input_result = data_parser.parse_transaction_input(
            tx_response['input'])
        print("transaction input parse:", tx_hash)
        print(input_result)

        # 解析该交易在receipt里输出的output,即交易调用的方法的return值
        output_result = data_parser.parse_receipt_output(
            input_result['name'], receipt['output'])
        print("receipt output :", output_result)

        # 调用一下call,获取数据
        print(
            "\n>>Call:------------------------------------------------------------------------"
        )
        res = client.call(to_address, contract_abi, "get")
        print("call get result:", res)

        # 关闭连接
        client.finish()

    except:
        pass
def main(argv):
    global parser
    global client
    if len(argv) < 3:
        usage()
        exit(0)

    contractname = argv[0]
    address = argv[1]
    event_name = argv[2]
    indexed_value = argv[3:]

    try:
        print("usage input {},{},{},{}".format(contractname, address,
                                               event_name, indexed_value))
        if address == "last":
            cn = ContractNote()
            address = cn.get_last(contractname)
            print("hex address :", address)
        abifile = "contracts/" + contractname + ".abi"
        parser = DatatypeParser(abifile)
        client = BcosClient()
        print(client.getinfo())
        register_event_callback([address], event_name, indexed_value)
    except Exception as e:
        import traceback
        traceback.print_exc()
        client.finish()
        import time
        time.sleep(0.5)
        sys.exit(-1)
  This project is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE
  Thanks for authors and contributors of eth-abi,eth-account,eth-hash,eth-keys,eth-typing,eth-utils,rlp, eth-rlp , hexbytes ...and relative projects
  @author: kentzhang
  @date: 2019-06
'''
from client.bcosclient import (
    BcosClient,
    BcosError
)
import os
from eth_utils import to_checksum_address
from client.datatype_parser import DatatypeParser

client = BcosClient()
#info = client.init()
print(client.getinfo())


#从文件加载abi定义
abi_file  ="contracts/SimpleInfo.abi"
data_parser = DatatypeParser()
data_parser.load_abi_file(abi_file)
contract_abi = data_parser.contract_abi

#部署合约
print("\n>>Deploy:---------------------------------------------------------------------")
with open("contracts/SimpleInfo.bin", 'r') as load_f:
    contract_bin = load_f.read()
    load_f.close()
result = client.deploy(contract_bin)
print("deploy",result)
Exemple #4
0
    print (__file__)

abi_file = contractPath + "/traffic.abi"
data_parser = DatatypeParser()
data_parser.load_abi_file(abi_file)
contract_abi = data_parser.contract_abi

# 以下是查询类的接口,大部分是返回json,可以根据对fisco bcos rpc接口json格式的理解,进行字段获取和转码
'''
useful helper:
int(num,16)  hex -> int
hex(num)  : int -> hex
'''
try:
    client = BcosClient()
    info = client.getinfo()
    print("client info:", info)
    stat = StatTool.begin()
    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>>---------------------------------------------------------------------")
    print("getPeers", client.getPeers())
    print("\n>>---------------------------------------------------------------------")
Exemple #5
0
def fisco_add_data_demo1():
    try:
        client = BcosClient()
        print(client.getinfo())
        print(client.client_account)
        abi_file = os.path.join(settings.SITE_ROOT, "contracts",
                                "UserTempInfo.abi")
        data_parser = DatatypeParser()
        data_parser.load_abi_file(abi_file)
        contract_abi = data_parser.contract_abi

        # 发送交易,调用一个改写数据的接口
        # print("\n>>sendRawTransaction:----------------------------------------------------")
        to_address = '0x2b042831e72894e292507629bec3ae4886f6fe06'  # use new deploy address
        args = ['99999', '武汉', '38.9度', 20000]

        receipt = client.sendRawTransactionGetReceipt(to_address, contract_abi,
                                                      "insert", args)
        print("receipt:", receipt)

        # # 调用一下call,获取数据
        # args = ['99']
        # print("\n>>Call:------------------------------------------------------------------------")
        # res = client.call(to_address, contract_abi, "select", args)
        # print("call get result:", res)

        # 解析receipt里的log
        print(
            "\n>>parse receipt and transaction:--------------------------------------"
        )
        tx_hash = receipt['transactionHash']
        print("transaction hash: ", tx_hash)
        log_result = data_parser.parse_event_logs(receipt["logs"])
        i = 0
        for log in log_result:
            if 'eventname' in log:
                i = i + 1
                print("{}): log name: {} , data: {}".format(
                    i, log['eventname'], log['eventdata']))
        # 获取对应的交易数据,解析出调用方法名和参数

        tx_response = client.getTransactionByHash(tx_hash)
        input_result = data_parser.parse_transaction_input(
            tx_response['input'])
        print("transaction input parse:", tx_hash)
        print(input_result)

        # 解析该交易在receipt里输出的output,即交易调用的方法的return值
        output_result = data_parser.parse_receipt_output(
            input_result['name'], receipt['output'])
        print("receipt output :", output_result)

        # 调用一下call,获取数据
        args = ['99999']
        print(
            "\n>>Call:------------------------------------------------------------------------"
        )
        res = client.call(to_address, contract_abi, "select", args)
        print("call get result:", res)

        print(
            "\n>>Call:------------------------------------------------------------------------"
        )
        res = client.call(to_address, contract_abi, "selectLatest", args)
        print("call get result:", res)

        # 关闭连接
        client.finish()

    except:
        pass