コード例 #1
0
def get_transaction_data(trx_id):
    # print "\ntrx_id:",trx_id
    ret = yield eth_request("eth_getTransactionByHash", [str(trx_id)])
    # print ret
    json_data = json.loads(ret)
    if json_data.get("result") is None:
        raise Exception("blockchain_get_transaction error trx_id:%s, returnStr: %s" % (trx_id, ret))
    resp_data = json_data.get("result")
    ret = yield eth_request("eth_getTransactionReceipt", [str(trx_id)])
    json_data = json.loads(ret)
    if json_data.get("result") is None:
        raise Exception("blockchain_get_transaction_receipt error  trx_id:%s, returnStr: %s" % (trx_id, ret))
    receipt_data = json_data.get("result")
    returnValue((resp_data, receipt_data))
コード例 #2
0
def get_latest_block_num(db):
    ret =yield eth_request("eth_blockNumber", [])
    json_data = json.loads(ret)
    d = db.b_config.find_one({"key": "safeblock"})
    safe_block = yield d
    safe_block = safe_block["value"]
    returnValue(int(json_data["result"], 16) - int(safe_block))
コード例 #3
0
def init_account_info(db):
    GlobalVariable.db_account_list = []
    GlobalVariable.account_list = []
    GlobalVariable.withdraw_account = []


    records = yield db.b_chain_account.find({"chainId": "eth"})
    for one_account in records:
        GlobalVariable.db_account_list.append(one_account["address"].lower())

    withdraw_data = yield db.b_config.find_one({"key": "withdrawaddress"})
    if withdraw_data is not None:

        for data in withdraw_data["value"]:
            if data["chainId"] == "eth":
                GlobalVariable.withdraw_account.append(data["address"].lower())
                break

    ret = yield eth_request("personal_listAccounts", [])
    json_data = json.loads(ret)
    if json_data.get("result") is None:
        raise Exception("get_all_account_list")
    GlobalVariable.account_list = json_data["result"]

    GlobalVariable.all_care_account = []
    GlobalVariable.all_care_account.extend(GlobalVariable.account_list)
    GlobalVariable.all_care_account.extend(GlobalVariable.db_account_list)
    GlobalVariable.all_care_account.extend(GlobalVariable.withdraw_account)
コード例 #4
0
def is_contract_trx(receipt_data):
    if receipt_data["contractAddress"] is not None:
        return True
    ret = eth_request("eth_getCode", [receipt_data["to"], "latest"])
    json_data = json.loads(ret)
    if json_data.get("result") is None:
        raise Exception("is contract trx error")

    if json_data["result"] == "0x":
        return False
    else:
        return True
コード例 #5
0
def collect_block(db_pool, block_num_fetch):
    ret = yield eth_request("eth_getBlockByNumber", [hex(block_num_fetch), False])

    # ret = eth_request("eth_getBlock", [str(block_num_fetch)])
    print "", block_num_fetch
    if json.loads(ret).get("result") is None:
        # 正式环境删除
        '''while True:
            block_num_fetch = GlobalVariable.sync_start_per_round

            GlobalVariable.sync_start_per_round += 1
            if GlobalVariable.sync_start_per_round > GlobalVariable.sync_end_per_round:
                GlobalVariable.sync_end_per_round = GlobalVariable.sync_start_per_round
            print hex(block_num_fetch)
            ret = eth_request("eth_getBlockByNumber", [hex(block_num_fetch), False])
            print "GlobalVariable.sync_start_per_round", GlobalVariable.sync_start_per_round, ret
            if json.loads(ret).get("result") is not None:
                break
        '''
        raise Exception("blockchain_get_block error blockNum:%d, returnStr: %s"%(block_num_fetch,ret))
    json_data = json.loads(ret)
    # print json_data["result"]
    json_data = json_data["result"]
    # if len(json_data["transactions"]) > 0:
    #    print "has transactions:", block_num_fetch

    block_info = BlockInfo()
    block_info.from_block_resp(json_data)

    block = db_pool.b_block

    mongo_data =yield block.find_one({"blockHash": block_info.block_id})
    # print {"blockHash":block_info.block_id}
    if mongo_data == None:
        block.insert(block_info.get_json_data())
    else:
        yield block.update({"blockHash": block_info.block_id}, {"$set": block_info.get_json_data()})

    # print 1

    returnValue( block_info)