def create_transfer_tx_multiple(fromaddr, dest_array, fee_each, privatekey, coloramt_array, inputs, inputcoloramt, othermeta): global outputs, tx, tx2 fee=int(fee_each*100000000) suminputs=0 for x in inputs: suminputs=x['value']+suminputs outputs=[] n=0 leftover_color=inputcoloramt leftover_btc=suminputs for dest in dest_array: transfer={} transfer['value']=int(dust*100000000) transfer['address']=dest outputs.append(transfer) leftover_btc=leftover_btc-int(100000000*dust*2) leftover_color=leftover_color-coloramt_array[n] n=n+1 colorchange={} colorchange['value']=int(dust*100000000) colorchange['address']=fromaddr outputs.append(colorchange) leftover_btc=leftover_btc-int(dust*100000000)-fee btcchange={} btcchange['value']=leftover_btc btcchange['address']=fromaddr if leftover_btc>int(dust*100000000): outputs.append(btcchange) # print '' # print '' # print "CREATE TX TRANSFER MULTIPLE" # print 'inputs' # print inputs # print '' # print 'outputs' # print outputs # print '' tx=mktx(inputs, outputs) # # print 'tx' # print tx asset_quantities=coloramt_array if leftover_color>0: asset_quantities.append(leftover_color) print asset_quantities message=bitsource.write_metadata(asset_quantities, othermeta) message=message.decode('hex') tx2=add_op_return(tx,message, 0) #JUST TRANSFERS # # print 'tx2' # print tx2 for i in range(len(inputs)): tx2=sign_tx(tx2,privatekey) print tx2 response=pushtx(tx2) return response
def create_transfer_tx_multiple(fromaddr, dest_array, fee_each, privatekey, coloramt_array, inputs, inputcoloramt, othermeta): global outputs, tx, tx2 fee = int(fee_each * 100000000) suminputs = 0 for x in inputs: suminputs = x['value'] + suminputs outputs = [] n = 0 leftover_color = inputcoloramt leftover_btc = suminputs for dest in dest_array: transfer = {} transfer['value'] = int(dust * 100000000) transfer['address'] = dest outputs.append(transfer) leftover_btc = leftover_btc - int(100000000 * dust * 2) leftover_color = leftover_color - coloramt_array[n] n = n + 1 colorchange = {} colorchange['value'] = int(dust * 100000000) colorchange['address'] = fromaddr outputs.append(colorchange) leftover_btc = leftover_btc - int(dust * 100000000) - fee btcchange = {} btcchange['value'] = leftover_btc btcchange['address'] = fromaddr if leftover_btc > int(dust * 100000000): outputs.append(btcchange) try: tx = mktx(inputs, outputs) except: print "SOME ERROR" print inputs print outputs tx = None # print tx if tx is not None: asset_quantities = coloramt_array if leftover_color > 0: asset_quantities.append(leftover_color) print asset_quantities message = bitsource.write_metadata(asset_quantities, othermeta) message = message.decode('hex') tx2 = add_op_return(tx, message, 0) #JUST TRANSFERS # # print 'tx2' print tx2 for i in range(len(inputs)): tx2 = sign_tx(tx2, privatekey) print tx2 response = pushtx(tx2) return response
def create_transfer_tx_with_helper(fromaddr, dest, fee, privatekey, coloramt, inputs, inputcoloramt, othermeta, helper_privatekey, helper_inputs): fee = int(fee * 100000000) sum_inputs = 0 for x in inputs: sum_inputs = x['value'] + sum_inputs print x['value'] print "SUM INPUTS: " + str(sum_inputs) outputs = [] transfer = {} transfer['value'] = int(dust * 100000000) transfer['address'] = dest outputs.append(transfer) colorchange = {} colorchange['value'] = int(dust * 100000000) colorchange['address'] = fromaddr outputs.append(colorchange) btcchange = {} btcchange['value'] = int(sum_inputs - fee - 2 * int(dust * 100000000)) print "BTCCHANGE " + str(btcchange['value']) btcchange['address'] = fromaddr if btcchange['value'] >= int(dust * 100000000): outputs.append(btcchange) tx = mktx(inputs, outputs) asset_quantities = [coloramt, inputcoloramt - coloramt] print "METADATA" print asset_quantities print othermeta print "" message = bitsource.write_metadata(asset_quantities, othermeta) message = message.decode('hex') tx2 = add_op_return(tx, message, 0) #JUST TRANSFERS for i in range(len(inputs)): tx2 = sign_tx(tx2, privatekey) print tx2 response = pushtx(tx2) free_outputs = [] j = 1 for x in outputs: r = {} r['value'] = x['value'] if not response is None: r['output'] = str(response) + ":" + str(j) free_outputs.append(r) j = j + 1 return response, free_outputs
def create_issuing_tx_unsigned(fromaddr, dest, fee, coloramt, othermeta): #ONLY HAS ONE ISSUE amt=dust tx=make_raw_transaction(fromaddr,amt,dest,fee) asset_quantities= [coloramt] metadata=bitsource.write_metadata(asset_quantities, othermeta).decode('hex') position_n=1 tx2=add_op_return(tx, metadata, position_n) print tx2 return tx2
def create_transfer_tx(fromaddr, dest, fee, privatekey, coloramt, inputs, inputcoloramt, othermeta): fee=int(fee*100000000) sum_inputs=0 for x in inputs: sum_inputs=x['value']+sum_inputs print x['value'] print "SUM INPUTS: "+str(sum_inputs) outputs=[] transfer={} transfer['value']=int(dust*100000000) transfer['address']=dest outputs.append(transfer) colorchange={} colorchange['value']=int(dust*100000000) colorchange['address']=fromaddr outputs.append(colorchange) btcchange={} btcchange['value']=int(sum_inputs-fee-2*int(dust*100000000)) print "BTCCHANGE "+str(btcchange['value']) btcchange['address']=fromaddr if btcchange['value']>=int(dust*100000000): outputs.append(btcchange) tx=mktx(inputs,outputs) asset_quantities=[coloramt, inputcoloramt-coloramt] print "METADATA" print asset_quantities print othermeta print "" message=bitsource.write_metadata(asset_quantities, othermeta) message=message.decode('hex') tx2=add_op_return(tx,message, 0) #JUST TRANSFERS for i in range(len(inputs)): tx2=sign_tx(tx2,privatekey) print tx2 response=pushtx(tx2) free_outputs=[] j=1 for x in outputs: r={} r['value']=x['value'] if not response is None: r['output']=str(response)+":"+str(j) free_outputs.append(r) j=j+1 return response, free_outputs
def create_issuing_tx(fromaddr, dest, fee, privatekey, coloramt, specific_inputs, othermeta): #ONLY HAS ONE ISSUE amt=dust tx=make_raw_one_input(fromaddr,amt,dest,fee, specific_inputs) asset_quantities= [coloramt] metadata=bitsource.write_metadata(asset_quantities, othermeta).decode('hex') position_n=1 tx2=add_op_return(tx, metadata, position_n) print tx2 tx3=sign_tx(tx2,privatekey) print tx3 response=pushtx(tx3) print response return response
def create_issuing_tx(fromaddr, dest, fee, privatekey, coloramt): #ONLY HAS ONE ISSUE global tx, tx2, tx3 amt=dust tx=make_raw_transaction(fromaddr,amt,dest,fee) asset_quantities= [coloramt] othermeta= 'PaikCoin' metadata=bitsource.write_metadata(asset_quantities, othermeta).decode('hex') position_n=1 tx2=add_op_return(tx, metadata, position_n) tx3=sign_tx(tx2,privatekey) response=pushtx(tx3) print response
def create_issuing_tx(fromaddr, dest, fee, privatekey, coloramt, specific_inputs, othermeta): #ONLY HAS ONE ISSUE amt=dust tx=make_raw_one_input(fromaddr,amt,dest,fee, specific_inputs) if not tx=='failed': asset_quantities= [coloramt] metadata=bitsource.write_metadata(asset_quantities, othermeta).decode('hex') position_n=1 tx2=add_op_return(tx, metadata, position_n) print tx2 tx3=sign_tx(tx2,privatekey) print tx3 response=pushtx(tx3) print response return response else: print "failed" return "failed"
def create_transfer_tx(fromaddr, dest, fee, privatekey, coloramt, inputs, inputcoloramt, othermeta): global tx, tx2, tx3, outputs, sum_inputs fee = int(fee * 100000000) sum_inputs = 0 for x in inputs: sum_inputs = x['value'] + sum_inputs outputs = [] transfer = {} transfer['value'] = int(dust * 100000000) transfer['address'] = dest outputs.append(transfer) colorchange = {} colorchange['value'] = int(dust * 100000000) colorchange['address'] = fromaddr outputs.append(colorchange) btcchange = {} btcchange['value'] = int(sum_inputs - fee - 2 * int(dust * 100000000)) btcchange['address'] = fromaddr if btcchange['value'] >= int(dust * 100000000): outputs.append(btcchange) tx = mktx(inputs, outputs) asset_quantities = [coloramt, inputcoloramt - coloramt] message = bitsource.write_metadata(asset_quantities, othermeta) message = message.decode('hex') tx2 = add_op_return(tx, message, 0) #JUST TRANSFERS for i in range(len(inputs)): tx3 = sign_tx(tx2, privatekey) print tx3 response = pushtx(tx3) return response
def create_transfer_tx(fromaddr, dest, fee, privatekey, coloramt, inputs, inputcoloramt): global tx, tx2, tx3, outputs, sum_inputs fee=int(fee*100000000) sum_inputs=0 for x in inputs: sum_inputs=x['value']+sum_inputs outputs=[] transfer={} transfer['value']=int(dust*100000000) transfer['address']=dest outputs.append(transfer) colorchange={} colorchange['value']=int(dust*100000000) colorchange['address']=fromaddr outputs.append(colorchange) btcchange={} btcchange['value']=int(sum_inputs-fee-dust*2*100000000) btcchange['address']=fromaddr outputs.append(btcchange) tx=mktx(inputs,outputs) asset_quantities=[coloramt, inputcoloramt-coloramt] othermeta='DethKoins' message=bitsource.write_metadata(asset_quantities, othermeta) message=message.decode('hex') tx2=add_op_return(tx,message, 0) #JUST TRANSFERS for i in range(len(inputs)): tx3=sign_tx(tx2,privatekey) response=pushtx(tx3) return response
def transfer_multiple_hetero(fromaddresses, toaddresses, fromprivatekeys, toamounts, tocolors, fee): l = len(fromaddresses) ins = [] outs = [] change_outs = [] colorlist = [] changecolorlist = [] btc_change_outs = [] totalbtcin = 0 privkeys = [] totalout = 0 for i in range(0, l): fromaddr = fromaddresses[i] toaddr = toaddresses[i] fromkey = fromprivatekeys[i] toamount = toamounts[i] tocolor = tocolors[i] inputs = find_transfer_inputs(fromaddr, tocolor, toamount, fee + dust) totalin = 0 for x in inputs[0]: privkeys.append(fromprivatekeys[i]) totalin = totalin + x['value'] inamount = inputs[1] ins = ins + inputs[0] outs.append({'address': toaddr, 'value': int(dust * 100000000)}) colorlist.append(toamount) change_outs.append({ 'address': fromaddr, 'value': int(dust * 100000000) }) btcchange = totalin - int(fee * 100000000) for x in outs: btcchange = btcchange - int(dust * 100000000) btc_change_outs.append({ 'address': fromaddresses[i], 'value': btcchange }) if inamount - toamount > 0: changecolorlist.append(inamount - toamount) outs = outs + change_outs outs = outs + btc_change_outs colorlist = colorlist + changecolorlist print "ins" print ins print '' print 'outs' print outs print '' print colorlist tx = mktx(ins, outs) #ADD METADATA othermeta = 'the horror' message = bitsource.write_metadata(colorlist, othermeta) message = message.decode('hex') tx2 = add_op_return(tx, message, 0) #JUST TRANSFERS # print 'tx2' print tx2 print '' print privkeys for i in range(len(ins)): print privkeys[i] tx2 = sign(tx2, i, privkeys[i]) print tx2 response = pushtx(tx2) return response
def transfer_multiple_hetero(fromaddresses, toaddresses, fromprivatekeys, toamounts, tocolors, fee): l=len(fromaddresses) ins=[] outs=[] change_outs=[] colorlist=[] changecolorlist=[] btc_change_outs=[] totalbtcin = 0 privkeys=[] totalout=0 for i in range(0,l): fromaddr = fromaddresses[i] toaddr = toaddresses[i] fromkey = fromprivatekeys[i] toamount = toamounts[i] tocolor = tocolors[i] inputs = find_transfer_inputs(fromaddr, tocolor, toamount, fee+dust) totalin=0 for x in inputs[0]: privkeys.append(fromprivatekeys[i]) totalin=totalin+x['value'] inamount = inputs[1] ins = ins +inputs[0] outs.append({'address': toaddr, 'value': int(dust*100000000)}) colorlist.append(toamount) change_outs.append({'address': fromaddr, 'value': int(dust*100000000)}) btcchange = totalin - int(fee*100000000) for x in outs: btcchange=btcchange - int(dust*100000000) btc_change_outs.append({'address': fromaddresses[i], 'value': btcchange}) if inamount-toamount>0: changecolorlist.append(inamount - toamount) outs = outs + change_outs outs = outs + btc_change_outs colorlist = colorlist+changecolorlist print "ins" print ins print '' print 'outs' print outs print '' print colorlist tx=mktx(ins,outs) #ADD METADATA othermeta = 'the horror' message=bitsource.write_metadata(colorlist, othermeta) message=message.decode('hex') tx2=add_op_return(tx,message, 0) #JUST TRANSFERS # print 'tx2' print tx2 print '' print privkeys for i in range(len(ins)): print privkeys[i] tx2=sign(tx2,i, privkeys[i]) print tx2 response=pushtx(tx2) return response