Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
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
Ejemplo n.º 8
0
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
Ejemplo n.º 9
0
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"
Ejemplo n.º 10
0
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
Ejemplo n.º 11
0
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
Ejemplo n.º 12
0
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
Ejemplo n.º 13
0
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