示例#1
0
def cargarDatos():
    altaUsuarios()
    cargarArmas()
    cargarMonedas()
    resultado = bbdd.buscarUsuarios()
    for e in resultado:
        if (e['usuario'] == "Darth vader"):
            usuario = e['usuario']
            privada = e['privada']
            publica = e['publica']
    return render_template("inicioD.html",
                           usuario=usuario,
                           privada=privada,
                           publica=publica)
示例#2
0
def login():
    if request.method == 'POST':
        nombre = request.form['nombre']
    resultado = bbdd.buscarUsuarios()
    for e in resultado:
        if (e['usuario'] == nombre):
            nombre_usuario = e['usuario']
            clave_privada = e['privada']
            clave_publica = e['publica']
    if (nombre == "Darth vader"):
        return render_template("inicioD.html",
                               usuario=nombre_usuario,
                               privada=clave_privada,
                               publica=clave_publica)
    else:
        return render_template("inicio.html",
                               usuario=nombre_usuario,
                               privada=clave_privada,
                               publica=clave_publica)
示例#3
0
def misMonedas():
    conexion = connect_db()
    if request.method == 'POST':
        usuario = request.form['usuario']
    result = bbdd.buscarUsuarios()
    for e in result:
        if (e['usuario'] == usuario):
            privada = e['privada']
            publica = e['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("misMonedas.html",
                           usuario=usuario,
                           monedas=cantidad_monedas)
示例#4
0
def comprar():
    if request.method == 'POST':
        usuario = request.form['usuario']
    conexion = connect_db()
    result = bbdd.buscarUsuarios()
    for e in result:
        if (e['usuario'] == "Darth vader"):
            privada = e['privada']
            publica = e['publica']
    resultado = bbdd.buscarArmas()
    ides = []
    nombres = []
    cantidades = []
    index = 0
    costos = []
    datos = []
    tam = 0
    for e in resultado:
        datos = conexion.transactions.get(asset_id=e['id'])
        nom = (datos[0]['asset']['data']['nombre'])
        costo = (datos[0]['asset']['data']['costo'])
        cant = len(datos) - 1
        outs = datos[cant]['outputs']
        canti = len(outs) - 1
        for i in outs:
            if (i['condition']['details']['public_key'] == publica):
                nombres.append(nom)
                ides.append(e['id'])
                cantidades.append(i['amount'])
                costos.append(costo)
        tam = len(nombres)
    return render_template("armasDisponibles.html",
                           usuario=usuario,
                           nombres=nombres,
                           ides=ides,
                           cantidades=cantidades,
                           tamanio=tam,
                           costos=costos)
示例#5
0
def cargarArmas():
    conexion = connect_db()
    resultado = bbdd.buscarUsuarios()
    for e in resultado:
        if (e['usuario'] == "Darth vader"):
            usuario = e['usuario']
            privada = e['privada']
            publica = e['publica']

    arma = {
        'data': {
            'nombre': "Rifle bláster EL-16",
            'cantidad': 10,
            'costo': 3
        }
    }
    tx = conexion.transactions.prepare(operation='CREATE',
                                       signers=publica,
                                       recipients=[([publica], 10)],
                                       asset=arma)
    firma_tx = conexion.transactions.fulfill(tx, private_keys=privada)
    sent_tx = conexion.transactions.send_commit(firma_tx)
    activo = conexion.assets.get(search="Rifle bláster EL-16")
    id = sent_tx['id']
    bbdd.insertarArma(id, usuario, privada, publica, "Rifle bláster EL-16", 10,
                      3)

    arma = {
        'data': {
            'nombre': "Bláster pesado T-21",
            'cantidad': 5,
            'costo': 2
        }
    }
    tx = conexion.transactions.prepare(operation='CREATE',
                                       signers=publica,
                                       recipients=[([publica], 5)],
                                       asset=arma)
    firma_tx = conexion.transactions.fulfill(tx, private_keys=privada)
    sent_tx = conexion.transactions.send_commit(firma_tx)
    activo = conexion.assets.get(search="Bláster pesado T-21")
    id = sent_tx['id']
    bbdd.insertarArma(id, usuario, privada, publica, "Bláster pesado T-21", 5,
                      2)

    arma = {
        'data': {
            'nombre': "Rifles pesados RT-97C",
            'cantidad': 15,
            'costo': 4
        }
    }
    tx = conexion.transactions.prepare(operation='CREATE',
                                       signers=publica,
                                       recipients=[([publica], 15)],
                                       asset=arma)
    firma_tx = conexion.transactions.fulfill(tx, private_keys=privada)
    sent_tx = conexion.transactions.send_commit(firma_tx)
    activo = conexion.assets.get(search="Rifles pesados RT-97C")
    id = sent_tx['id']
    bbdd.insertarArma(id, usuario, privada, publica, "Rifles pesados RT-97C",
                      15, 4)

    return render_template("inicioD.html",
                           usuario=usuario,
                           privada=privada,
                           publica=publica)
示例#6
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")
示例#7
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)
示例#8
0
def cargarMonedas():
    conexion = connect_db()
    resultado = bbdd.buscarUsuarios()
    for e in resultado:
        if (e['usuario'] == "Darth vader"):
            usuario_darth = e['usuario']
            privada_darth = e['privada']
            publica_darth = e['publica']
        if (e['usuario'] == "Boba fett"):
            usuario_boba = e['usuario']
            privada_boba = e['privada']
            publica_boba = e['publica']
        if (e['usuario'] == "Greedo"):
            usuario_greedo = e['usuario']
            privada_greedo = e['privada']
            publica_greedo = e['publica']
        if (e['usuario'] == "Din D jarin"):
            usuario_din = e['usuario']
            privada_din = e['privada']
            publica_din = e['publica']
    moneda = {'data': {'nombre': "Galactic Coin", 'cantidad': 20}}

    tx = conexion.transactions.prepare(operation='CREATE',
                                       signers=publica_darth,
                                       recipients=[([publica_darth], 6)],
                                       asset=moneda)
    firma_tx = conexion.transactions.fulfill(tx, private_keys=privada_darth)
    sent_tx = conexion.transactions.send_commit(firma_tx)
    id = sent_tx['id']
    bbdd.insertarMoneda(id, usuario_darth, privada_darth, publica_darth,
                        "Galactic Coin", 6)

    ## 5 a Boba Fett
    tx = conexion.transactions.prepare(operation='CREATE',
                                       signers=publica_darth,
                                       recipients=[([publica_boba], 5)],
                                       asset=moneda)
    firma_tx = conexion.transactions.fulfill(tx, private_keys=privada_darth)
    sent_tx = conexion.transactions.send_commit(firma_tx)
    id = sent_tx['id']
    bbdd.insertarMoneda(id, usuario_darth, privada_darth, publica_darth,
                        "Galactic Coin", 5)

    ## 3 a Greedo
    tx = conexion.transactions.prepare(operation='CREATE',
                                       signers=publica_darth,
                                       recipients=[([publica_greedo], 3)],
                                       asset=moneda)
    firma_tx = conexion.transactions.fulfill(tx, private_keys=privada_darth)
    sent_tx = conexion.transactions.send_commit(firma_tx)
    id = sent_tx['id']
    bbdd.insertarMoneda(id, usuario_darth, privada_darth, publica_darth,
                        "Galactic Coin", 3)

    ## 8 a Din Djarin
    tx = conexion.transactions.prepare(operation='CREATE',
                                       signers=publica_darth,
                                       recipients=[([publica_din], 8)],
                                       asset=moneda)
    firma_tx = conexion.transactions.fulfill(tx, private_keys=privada_darth)
    sent_tx = conexion.transactions.send_commit(firma_tx)
    id = sent_tx['id']
    bbdd.insertarMoneda(id, usuario_darth, privada_darth, publica_darth,
                        "Galactic Coin", 8)
    return render_template("inicioD.html",
                           usuario=usuario_darth,
                           privada=privada_darth,
                           publica=publica_darth)