コード例 #1
0
def print_red(options, blk_id):
    global count_tx_black
    global count_total_tx
    global black_nodes
    global y
    global total_number_nodes
    global length_dict_black_nodes
    black_nodes_excluding_block = len(dict_black_nodes)
    number_tx_in_block = 0
    number_black_tx_in_block = 0
    volume_tx_in_block = 0
    volume_black_tx_in_block = 0
    # contains all the nodes involved in transactions with black nodes within this block (inputs and outputs)
    all_black_nodes = set()
    # contains all the nodes involved in transactions within this block
    all_nodes = set()
    if not options.pickled:
        blk = block.load_id(
            None, int(blk_id), "/Volumes/KIKS/UH-2s/UH-%s-%s" %
            (options.currency, options.heuristic))
    else:
        blk = block.load_id(options.currency, int(blk_id))
    for (pos,
         (transaction_hash, transaction_fee, new_elements, transaction_input,
          transaction_output)) in enumerate(blk.transactions):
        if len(transaction_input) == 1 and options.filter_in:
            continue
        if len(transaction_output) == 1 and options.filter_out:
            continue

        inputs = set()
        count_total_tx += 1
        number_tx_in_block += 1
        for i in transaction_input:
            inputs.add(i[0])
            volume_tx_in_block += i[1]
            all_nodes.add(i[0])
            total_number_nodes.add(i[0])

        for j in transaction_output:
            all_nodes.add(j[0])
            total_number_nodes.add(j[0])
        for i in inputs:
            str_i = str(i)
            if str_i[0:3] in dict_black_nodes.keys():
                print('in dict')
                if i in dict_black_nodes[str_i[0:3]]:
                    print('really')
                    count_tx_black += 1
                    number_black_tx_in_block += 1
                    for j in transaction_input:
                        volume_black_tx_in_block += j[1]
                        all_black_nodes.add(j[0])
                    for v in transaction_output:
                        all_black_nodes.add(v[0])
                        for u in set(data):
                            str_u = str(u)
                            if str_u[0:3] not in dict_black_nodes.keys():
                                dict_black_nodes[str_u[0:3]] = set()
                            dict_black_nodes[str_u[0:3]].add(i)
    for i in dict_black_nodes.keys():
        length_dict_black_nodes += len(dict_black_nodes[i])
    # all_black_nodes=list(set(all_black_nodes))
    all_nodes = list(set(all_nodes))
    new_black_nodes = length_dict_black_nodes - black_nodes_excluding_block
    number_clean_tx_in_block = number_tx_in_block - number_black_tx_in_block
    # TODO: don't use black_nodes, track appearance of black nodes or find an explanation
    volume_clean_tx_block = volume_tx_in_block - volume_black_tx_in_block
    number_nodes_clean = len(all_nodes) - len(all_black_nodes)
    # total number of black nodes = len(dict_black_nodes.values()) vs total number of nodes len(total_number_nodes)
    row = [[
        new_black_nodes, black_nodes_excluding_block,
        len(total_number_nodes), length_dict_black_nodes,
        number_clean_tx_in_block, number_black_tx_in_block, number_tx_in_block,
        volume_clean_tx_block, volume_black_tx_in_block, volume_tx_in_block,
        number_nodes_clean,
        len(all_black_nodes),
        len(all_nodes)
    ]]

    y = np.append(y, np.array(row), axis=0)
コード例 #2
0
def print_red(options, blk_id):
    global count_tx_black
    global count_total_tx
    global black_nodes
    black_nodes_excluding_block = len(black_nodes)
    number_tx_in_block = 0
    number_black_tx_in_block = 0
    volume_tx_in_block = 0
    volume_black_tx_in_block = 0
    # contains all the nodes involved in transactions with black nodes within this block (inputs and outputs)
    all_black_nodes = []
    # contains all the nodes involved in transactions within this block
    all_nodes = []
    if not options.pickled:
        blk = block.load_id(
            None, int(blk_id), "/Volumes/KIKS/UH-bitcoin-heur_2s/UH-%s-%s" %
            (options.currency, options.heuristic))
    else:
        blk = block.load_id(options.currency, int(blk_id))
    for (pos,
         (transaction_hash, transaction_fee, new_elements, transaction_input,
          transaction_output)) in enumerate(blk.transactions):
        if len(transaction_input) == 1 and options.filter_in:
            continue
        if len(transaction_output) == 1 and options.filter_out:
            continue

        inputs = []
        count_total_tx += 1
        number_tx_in_block += 1
        for i in transaction_input:
            inputs.append(i[0])
            volume_tx_in_block += i[1]
            all_nodes.append(i[0])
            # if i[0] not in all_nodes:
            #     all_nodes.append(i[0])

        for j in transaction_output:
            all_nodes.append(j[0])

        if bool(set(inputs) & black_nodes):
            count_tx_black += 1
            number_black_tx_in_block += 1
            for i in transaction_input:
                volume_black_tx_in_block += i[1]
                all_black_nodes.append(i[0])

            for i in transaction_output:
                all_black_nodes.append(i[0])
                black_nodes.add(i[0])

        # print ("TX:::  (%s) %s"%(blk_id, transaction_hash))
        #
        # print ("FULL: %s >> %s |%s "%( transaction_input, transaction_output, new_elements ))
        # try:
        #     (rh,rf,rs,rin,rout) = blk.short_transactions[pos]
        #     print ("REDU: %s >> %s |%s "%(  rin, rout, rs ))
        # except: pass
        #
        # print  (120*"-")
    all_black_nodes = list(set(all_black_nodes))
    all_nodes = list(set(all_nodes))
    new_black_nodes = len(black_nodes) - black_nodes_excluding_block
    # new black nodes, number of black nodes before entering the block
    new_black = [new_black_nodes, black_nodes_excluding_block]
    number_clean_tx_in_block = number_tx_in_block - number_black_tx_in_block
    # clean, black, total
    black_clean_tx = [
        number_clean_tx_in_block, number_black_tx_in_block, number_tx_in_block
    ]
    volume_clean_tx_block = volume_tx_in_block - volume_black_tx_in_block
    # clean, black, total
    volume_black_clean = [
        volume_clean_tx_block, volume_black_tx_in_block, volume_tx_in_block
    ]
    number_nodes_clean = len(all_nodes) - len(all_black_nodes)
    # clean, black, total
    number_nodes_clean_black = [
        number_nodes_clean,
        len(all_black_nodes),
        len(all_nodes)
    ]

    row = [
        new_black, black_clean_tx, volume_black_clean, number_nodes_clean_black
    ]

    writer.writerow(row)
コード例 #3
0
def print_red(options, blk_id):
    global count_tx_black
    global count_total_tx
    global black_nodes
    global y
    global total_number_nodes
    global length_dict_black_nodes
    global volume_black
    global volume_total
    black_nodes_excluding_block = length_dict_black_nodes
    number_tx_in_block = 0
    number_black_tx_in_block = 0
    volume_tx_in_block = 0
    volume_black_tx_in_block = 0
    # contains all the nodes involved in transactions with black nodes within this block (inputs and outputs)
    all_black_nodes = set()
    # contains all the nodes involved in transactions within this block
    all_nodes = set()
    if not options.pickled:
        blk = block.load_id(
            None, int(blk_id), "/Volumes/KIKS/UH-1/UH-%s-%s" %
            (options.currency, options.heuristic))
    else:
        blk = block.load_id(options.currency, int(blk_id))
    for (pos,
         (transaction_hash, transaction_fee, new_elements, transaction_input,
          transaction_output)) in enumerate(blk.transactions):
        if len(transaction_input) == 1 and options.filter_in:
            continue
        if len(transaction_output) == 1 and options.filter_out:
            continue

        inputs = set()
        count_total_tx += 1
        number_tx_in_block += 1
        for i in transaction_input:
            inputs.add(i[0])
            volume_tx_in_block += i[1]
            volume_total += i[1]
            all_nodes.add(i[0])
            total_number_nodes.add(i[0])

        for j in transaction_output:
            all_nodes.add(j[0])
            total_number_nodes.add(j[0])
        # if bool(inputs & black_nodes):
        #     count_tx_black+=1
        #     number_black_tx_in_block+=1
        #     for i in transaction_input:
        #         volume_black_tx_in_block+=i[1]
        #         all_black_nodes.add(i[0])
        #     for i in transaction_output:
        #         all_black_nodes.add(i[0])
        #         black_nodes.add(i[0])
        #         black_nodes_cumulative.add(i[0])

        for i in inputs:
            str_i = str(i)
            if str_i[0:4] in dict_black_nodes.keys():
                if i in dict_black_nodes[str_i[0:4]]:
                    count_tx_black += 1
                    number_black_tx_in_block += 1
                    for j in transaction_input:
                        volume_black_tx_in_block += j[1]
                        volume_black += j[1]
                        all_black_nodes.add(j[0])
                    for v in transaction_output:
                        str_v = str(v)
                        all_black_nodes.add(v[0])
                        if str_v[0:4] not in dict_black_nodes.keys():
                            dict_black_nodes[str_v[0:4]] = set()
                        dict_black_nodes[str_v[0:4]].add(i)
                        black_nodes_cumulative.add(v[0])
                        black_nodes.add(v[0])

        # print ("TX:::  (%s) %s"%(blk_id, transaction_hash))
        #
        # print ("FULL: %s >> %s |%s "%( transaction_input, transaction_output, new_elements ))
        # try:
        #     (rh,rf,rs,rin,rout) = blk.short_transactions[pos]
        #     print ("REDU: %s >> %s |%s "%(  rin, rout, rs ))
        # except: pass
        #
        # print  (120*"-")
    # black_node_length = len(set.union(*list(dict_black_nodes.values())))
    black_node_length = len(black_nodes)
    length_dict_black_nodes = black_node_length
    all_black_nodes = list(set(all_black_nodes))
    all_nodes = list(set(all_nodes))
    new_black_nodes = black_node_length - black_nodes_excluding_block
    cumulated_black_nodes = len(black_nodes_cumulative)
    # new black nodes, number of black nodes before entering the block
    # new_black=[new_black_nodes,black_nodes_excluding_block,'0']
    number_clean_tx_in_block = number_tx_in_block - number_black_tx_in_block
    # total number of black nodes vs total number of nodes
    # TODO: don't use black_nodes, track appearance of black nodes or find an explanation
    # total_nodes=[len(total_number_nodes),len(black_nodes),'0']
    # clean, black, total
    # black_clean_tx=[number_clean_tx_in_block,number_black_tx_in_block,number_tx_in_block]
    volume_clean_tx_block = volume_tx_in_block - volume_black_tx_in_block
    # clean, black, total
    # volume_black_clean=[volume_clean_tx_block,volume_black_tx_in_block,volume_tx_in_block]
    number_nodes_clean = len(all_nodes) - len(all_black_nodes)
    # clean, black, total
    # number_nodes_clean_black = [number_nodes_clean,len(all_black_nodes),len(all_nodes)]

    row = [[
        new_black_nodes, black_nodes_excluding_block, cumulated_black_nodes,
        len(total_number_nodes), black_node_length, number_clean_tx_in_block,
        number_black_tx_in_block, number_tx_in_block, volume_clean_tx_block,
        volume_black_tx_in_block, volume_tx_in_block, number_nodes_clean,
        len(all_black_nodes),
        len(all_nodes), volume_total, volume_black
    ]]

    y = np.append(y, np.array(row), axis=0)