Primera herramienta: Gestion de cartera.

Empezaremos por el desarrollo de una herramienta para la gestión de carteras.

Una cartera es una colección de direcciones diferentes que pertenecen al mismo usuario. Cada dirección es, en teoría, independiente, y el uso de una cartera busca simplificar el uso de Paskal para aquellos usuarios que piensen usar múltiples direcciones (lo que en teoría, deben ser la inmensa mayoría de usuarios).

Pero al mismo tiempo la idea es también desarrollar una aplicación ligera para los usuarios que no tengan pensando minar; con una aplicación de gestión de cartera deben ser capaces de consultar sus saldos y enviar pagos sin necesidad de sincronizarse a la red P2P de Paskal.

Para empezar, creamos una nueva aplicación en Lazarus y le ajustamos lo básico:
  • Titulo del formulario. (Paskal Wallet).
  • Tamaño (640x480 debería ser suficiente) y ubicación (siempre nos ha gustado en mitad de pantalla).
  • El icono (se cambia en Proyecto -> Opciones del proyecto)
  • Añadimos una función a ejecutarse cuando se crea el formulario para poder añadir los componentes visuales: para empezar, un Tmemo y un Tedit para establecer nuestra consola. Cabe destacar que también añadimos un procedimiento para "leer" cuando se pulsa Intro en la línea de comandos, y otro, que será el que procese las ordenes entradas por la línea de comandos (este último de momento vacío)

Hagamos la primera prueba sencilla: consultar la versión del programa (la cual esta definida en una constante) mediante el comando 'version'.

Para evitar problemas con la ejecución simultanea de varias órdenes, es nuestra costumbre crear un TStringlist donde ir añadiendo las lineas que serán mostradas y, al final de los procesos, mostrar la información en la consola. Esto resultara crucial mas adelante cuando creemos 'hilos' independientes que no pueden acceder a la interfaz gráfica del usuario (GUI),

Ahora bien, el siguiente paso seria crear una cartera. Pero para crear una cartera, es necesario que primero verifiquemos si OpenSSL esta instalado. Para eso vamos a crear un nuevo comando, 'checkssl' y una función que lo haga.

Para optimizar uso, asignamos una variable para buscar el openssl una vez. Sea cual sea el resultado, el programa trabajara en función a ello, sea que este presente o no.


Ya nuestra aplicación tiene forma y cumple sus primeras instrucciones. A continuación, empezamos con los procesos criptográficos propiamente dichos: crear una cartera, que nos servirá para la red P2P; para ello, usaremos el comando 'newwallet'. Por medio de funciones de OpenSSL se obtienen las claves públicas y privadas, se aplican varios hash a la clave publica para sintetizar la dirección y se almacena la información en el archivo de cartera.


Voila! Tenemos nuestra primera cartera con una dirección valida de Paskal!


Aqui les dejo el texto tal como va hasta ahora.


Comentarios

Entradas populares de este blog

Funcionamiento interno

Como funciona una criptomoneda?

Año nuevo, nuevo nombre