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)
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)
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)