Example #1
0
def transferirMonedas():
    conexion = connect_db()
    if request.method == 'POST':
        publica = request.form['publica']
    resultado = bbdd.buscarMonedas()
    cantidad_monedas = 0
    for e in resultado:
        datos = conexion.transactions.get(asset_id=e['id'])
        cant = len(datos) - 1
        outs = datos[cant]['outputs']
        canti = len(outs) - 1
        for i in outs:
            if (i['condition']['details']['public_key'] == publica):
                cantidad_monedas = (cantidad_monedas + int(i['amount']))
    return render_template("transferirMonedas.html", monedas=cantidad_monedas)
Example #2
0
def confirmarTransferencia():
    conexion = connect_db()
    if request.method == 'POST':
        cantidad = int(request.form['cantidad'])
        destinatario = request.form['destinatario']
        monedas = int(request.form['monedas'])
    resultado = bbdd.buscarUsuarios()
    for e in resultado:
        if (e['usuario'] == "Darth vader"):
            usuario_emisor = e['usuario']
            privada_emisor = e['privada']
            publica_emisor = e['publica']
        if (e['usuario'] == destinatario):
            usuario_destinatario = e['usuario']
            privada_destinatario = e['privada']
            publica_destinatario = e['publica']
    mon = []
    if (cantidad <= monedas):
        mone = bbdd.buscarMonedas()
        datos = []
        canti = []
        for e in mone:
            datos.append(conexion.transactions.get(asset_id=e['id']))
            for d in datos:
                cant = (len(d) - 1)
                cant = int(cant)
                outs = d[cant]['outputs']
                clave = outs[0]['condition']['details']['public_key']
                if (clave == publica_emisor):
                    canti.append(int(outs[0]['amount']))
                    mon.append(d[0]['id'])
        id_moneda = mon[0]
        cantidad_monedas = int(canti[0])
        datos_moneda = conexion.transactions.get(asset_id=id_moneda)
        if (cantidad_monedas >= cantidad):
            resto_monedas = (cantidad_monedas - cantidad)
            o_index = 0
            output = datos_moneda[0]['outputs'][o_index]
            transfer_input = {
                'fulfillment': output['condition']['details'],
                'fulfills': {
                    'output_index': o_index,
                    'transaction_id': datos_moneda[0]['id'],
                },
                'owners_before': output['public_keys'],
            }
            transfer_asset = {
                'id': datos_moneda[0]['id'],
            }
            prepared_transfer_tx = conexion.transactions.prepare(
                operation='TRANSFER',
                asset=transfer_asset,
                inputs=transfer_input,
                recipients=[([publica_destinatario], cantidad),
                            ([publica_emisor], resto_monedas)])
            fulfilled_transfer_tx = conexion.transactions.fulfill(
                prepared_transfer_tx, private_keys=privada_emisor)
            sent_transfer_tx = conexion.transactions.send_commit(
                fulfilled_transfer_tx)

            return render_template("transferido.html",
                                   monedas=cantidad,
                                   destinatario=usuario_destinatario)
        else:
            return render_template("transfer_insuficiente.html")
    else:
        return render_template("transfer_insuficiente.html")
Example #3
0
def confirmarCompra():
    if request.method == 'POST':
        id = request.form['id']
        comprador = request.form['comprador']
        cantidadDisponible = int(request.form['cantidadDisponible'])
        cantidadRequerida = int(request.form['cantidadRequerida'])
        costo = int(request.form['costo'])
        nombreArma = request.form['nombre']
    conexion = connect_db()
    resultado = bbdd.buscarUsuarios()
    for e in resultado:
        if (e['usuario'] == "Darth vader"):
            usuario_vendedor = e['usuario']
            privada_vendedor = e['privada']
            publica_vendedor = e['publica']
        if (e['usuario'] == comprador):
            usuario_comprador = e['usuario']
            privada_comprador = e['privada']
            publica_comprador = e['publica']

    ##Datos moneda
    mone = bbdd.buscarMonedas()
    datos = []
    for e in mone:
        datos.append(conexion.transactions.get(asset_id=e['id']))
        for d in datos:
            cant = (len(d) - 1)
            cant = int(cant)
            outs = d[cant]['outputs']
            clave = outs[0]['condition']['details']['public_key']
            if (clave == publica_comprador):
                cantidad_monedas = int(outs[0]['amount'])
                id_moneda = d[0]['id']

    datos_moneda = conexion.transactions.get(asset_id=id_moneda)

    totalCompra = int(cantidadRequerida * costo)
    if (cantidadRequerida <= cantidadDisponible):
        if (totalCompra <= cantidad_monedas):
            #Venta
            resto_armas = (cantidadDisponible - cantidadRequerida)
            output_index = 0
            datos_armas = conexion.transactions.get(asset_id=id)
            output = datos_armas[0]['outputs'][output_index]
            transfer_input = {
                'fulfillment': output['condition']['details'],
                'fulfills': {
                    'output_index': output_index,
                    'transaction_id': datos_armas[0]['id'],
                },
                'owners_before': output['public_keys'],
            }
            transfer_asset = {
                'id': datos_armas[0]['id'],
            }
            prepared_transfer_tx = conexion.transactions.prepare(
                operation='TRANSFER',
                asset=transfer_asset,
                inputs=transfer_input,
                recipients=[([publica_comprador], cantidadRequerida),
                            ([publica_vendedor], resto_armas)])
            fulfilled_transfer_tx = conexion.transactions.fulfill(
                prepared_transfer_tx, private_keys=privada_vendedor)
            sent_transfer_tx = conexion.transactions.send_commit(
                fulfilled_transfer_tx)

            #Cobro
            resto_monedas = (cantidad_monedas - totalCompra)
            o_index = 0
            output = datos_moneda[0]['outputs'][o_index]
            transfer_input = {
                'fulfillment': output['condition']['details'],
                'fulfills': {
                    'output_index': o_index,
                    'transaction_id': datos_moneda[0]['id'],
                },
                'owners_before': output['public_keys'],
            }
            transfer_asset = {
                'id': datos_moneda[0]['id'],
            }
            prepared_transfer_tx = conexion.transactions.prepare(
                operation='TRANSFER',
                asset=transfer_asset,
                inputs=transfer_input,
                recipients=[([publica_vendedor], totalCompra),
                            ([publica_comprador], resto_monedas)])
            fulfilled_transfer_tx = conexion.transactions.fulfill(
                prepared_transfer_tx, private_keys=privada_comprador)
            sent_transfer_tx = conexion.transactions.send_commit(
                fulfilled_transfer_tx)

            return render_template("comprado.html",
                                   usuario=comprador,
                                   cantidad=cantidadRequerida,
                                   nombre=nombreArma)
        else:
            return render_template("monedas_insuficientes.html",
                                   usuario=usuario_comprador)
    else:
        return render_template("armas_insuficientes.html",
                               usuario=usuario_comprador)