Desarrollando un videogame: revision 9

Chris, alrededor de las 7:00 PM

Al día de la fecha, el primer videogame casi concluído y online. Solo queda la conexión final al blockchain, que sería usada de manera exclusiva cuando un usuario quiere enviar o sacar dinero de la aplicación.

De esa manera, los balances de cada usuario no son más que información almacenada en el servidor, sin realizar operación alguna sobre la red de P2P, a excepción del ingreso y el egreso de la misma.

Se comienza a diseñar la infra usando los servicios de blockchain.info

Porque las personas prefieren publicaciones con imágenes a leer! Una imagen del dialogo de ayuda del videogame.


#1 Creación de direcciones rápidas para cada usuario:

Las direcciones rápidas se crean una vez para cada vez que el usuario desea ingresar dinero. Cada vez que un usuario desea hacer un nuevo ingreso de dinero, una nueva dirección rápida debe ser generada y nunca eliminada.

Sin embargo, considero que nunca debe ser creada una nueva dirección rápida para un mismo usuario, sin haber usado la previa.

Se crea una dirección rápida única para cada usuario, cualquier dinero que ingrese a la dirección rápida de un usuario, será considerado dinero de ese usuario.

Función: Las direcciones rápidas de cada usuario esperan a recibir dinero de un usuario, para luego reenviar el saldo a la dirección rápida principal.

Ubicación: nubes de blockchain.com + servidor


#2 Creación de dirección rápida principal usada por el videogame.

El dinero de la dirección rápida principal llega desde las direcciones rápidas generadas para cada usuario. Es el lugar donde se reúne el dinero de cada uno de los usuarios.

El dinero no se mueve de ahí, y debería de poseer la mayor seguridad posible, por obvias razones. Hay dos opciones posibles para que el dinero salga de aquí:

  • Usuarios: un usuario desea sacar dinero de su balance disponible.
  • Empresa: la aplicación envía su margen de ganancias hacia la dirección fría.

Ubicación: nubes de blockchain.com + servidor. En caso de robo: se pierde el dinero de los usuarios y se daña la imagen de la empresa.


#3 Creación de dirección fría de cobranzas:

Quizás la razón, quizás el porque, quizás no debería escribir poesía acá, ¿por que no? pienso, porque no es la convención, porque no es adecuado.

So, la dirección fría de cobranzas es la dirección final, donde va el dinero de cada una de las cosas que la casa cobra, como la creación de una nueva unidad, que al día de la fecha, equivale a 100 unidades.

En caso de que el día de mañana se incorpore una compra rápida de powerups, ese mismo dinero, primero sería deducido del balance del usuario, y luego saldría de la dirección rápida principal, hacia la dirección fría.

Nunca saldría el dinero de la dirección fría, salvo para cobrar el dinero, o las ganancias de la empresa. Es igual al banco de la empresa de videogames. Es el banco de la empresa de videogames.

Ubicación: La memoria de un cablemodem surfboard sb5100, escondido en una pila de hardware desarmado, un pendrive, y la página de algún cuaderno.

En caso de robo: se pierden las ganancias acumuladas de la empresa y los usuarios no lo percibirían, y podría pasar a la vez que los usuarios siguen usando la aplicación.


Comenzamos: problema #1

Chris, alrededor de las 9:00 PM

Dado que la conexión a blockchain.com requiere de un pequeño dimen“daemon”, un mini servidor en node, el cual procesa pedidos solo recibidos desde 127.0.0.1, es necesario poner la API en PHP y el servidor de node, en el mismo lugar.

Considerando que he venido usando dos servidores (uno en américa y uno en europa), creo que será más fácil migrar ahora mi servidor europeo, y ubicar el API en PHP, al igual que el dimen en AWS, quedando el 100% del código en AWS.

Previo a hacer eso, considero más simple hacer lo mismo, pero en mis propios equipos, para luego hacer un gran push hacia las dos EMIS de AWS.

Procedo a descargar una copia del API en PHP y la información en la mariadb, a fin de crear una copia 100% funcional desde mi propia maquina.


Modificaciones : problema #2

Chris, alrededor de las 3:00 AM

Después de descargar y armar cada una de las piezas en mi maquina, me vi forzado de alguna manera a cambiar algunas funciones y crear algunas variables para resolver algunos problemas que ya había.

A fin de separar el acceso de un usuario, del spawn y el respawn, fue necesario cambiar algunas funciones, variables y el orden del programa. También se modificó la API,

Más allá de las diversas modificaciónes que se pueden ver, solo quedaría agregar una función que corra la función de desconexión, cuando un usuario no se mueve desde hace más de 1 min.

Habiendo mencionado eso, espero volver en unas horas a los hechos y añadir la función, pasemos ahora al dimen de blockchain.


Primeras medidas

  • ✓ Armar el servidor API de blockchain.com en el equipo <manual>
  • ✓ Maldición, la API de blockchain.info & blockchain.com fallan.
  • ✓ Muchos casos mencionando lo mismo.
  • ✓ Al día de hoy, no anda el formulario para pedir una llave.
  • ✓ Vamos a crear un usuario con block.io
  • ✓ Creación de usuario en block.io
  • ✓ Creación de la dirección principal aka ‘main_address’ <manual>
  • ✓ Creación de una dirección para cada uno de los usuarios previos.
  • ✓ Las direcciones deben corresponder al user_id.
  • ✓ Almacenar direcciones en la db, para luego usarlas.
  • ✓ Por medio de la API:
    • ✓ Creación de una dirección para usuario,
    • ✓ Debería de pasar en a la creación de usuario.
    • ✓ Hace posible que los usuarios envíen dinero a la app.
    • ✓ Se crean direcciones usando bech32 pubkey hash (bc1)
  • ✓ Enviar dinero a una dirección de usuario de forma manual para evaluar.
    • ✓ La primera xferencia fue grandiosa!
    • ✓ Primera validación y confirmaciones muy rápidas en block.io!
    • ✓ Parece no haber cobrado comisión alguna!
  • ✓ Probar xferencia hacia ‘main_address’ una vez que accede el dinero.
    • Se puede apreciar que funciona bien.
    • Es necesario evaluar diversos mecanismos para pagar menos comisiones.
  • Por medio de la API:
    • Sacar dinero de ‘main_address’ hacia dirección especificada
    • Siempre y cuando el dinero sea igual o menor a su balance.

Comencemos por eso…

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *