Archivos, depuraciones y protocolo

Siguiendo con lo que vimos en la entrada anterior, creamos una nueva unidad para las funciones relacionadas con el tiempo, y un interruptor al inicio que verifique la validez de nuestro tiempo local. Tambien necesitaremos un archivo que almacene la informacion de los servidores NTP para poder intercambiarlos y compartirlos en la red. La funcion que usaremos para incluir la hora de red sera 'UTCTime'.

Para organizar mejor el programa, haremos que todos los archivos necesarios sean colocados en una carpeta aparte: 'MPDATA'. Desde luego, ya que OpenSSL es FUNDAMENTAL para el funcionamiento del programa, tambien hacemos la verificacion al iniciar. Asimismo incorporamos el procedimiento para la creacion/carga de carteras que ya habiamos implementados para PaskalWallet, ya que siempre debe haber una cartera asociada al momento de ejecutar el programa.

Ver las direcciones de la cartera activa es una informacion muy importante, por tanto incluiremos un espacio para mostrarlas al usuario en todo momento.

Ya somos capaces de aceptar conexiones entrantes y conectarnos como clientes a otros usuarios; para que la comunicacion sea efectiva es necesario el uso del protocolo. Como comentamos en una entrada del blog anterior, añadimos 'GETNODES' y 'NODES' a las funciones del protocolo y podemos ver que ya fucionan como se espera: al usuario que solicita una lista de nodos disponibles, se le envia la informacion de los (hasta 50) nodos que se posean. Como La funcion que envia esta informacion toma los nodos por orden de antiguedad en que fueron añadidos, es importante hablar de una medida que hay que tomar en muchas partes del programa para evitar la saturacion con el paso del tiempo: la escalabilidad de informacion intrascendental.

Si acumulamos toda la informacion que maneje la red, nos encontraremos con que poco a poco estaremos usando espacio en informacion que no es util, o en algunos, incluso equivocada. Pongamos el ejemplo de los nodos: cuando un usuario se conecta a un nodo, lo almacena como un nodo valido, y lo envia a otros usuarios cuando le pregunten por nodos validos. Ahora bien, con el paso del tiempo, ese nodo puede dejar de funcionar por multiples razones. Para que seguir manteniendo y compartiendo esa informacion? Se hace necesario un depurado ocasional para eliminar los nodos que llevan determinado tiempo sin ser usados, esto evita que con el paso del tiempo se tenga una lista de nodos ridiculamente grande, donde la mayoria de ellos ya no seran validos.

Este ejemplo es valido para muchos otros aspectos de la tecnologia blockchain, y se hace imprescindible aplicar depuraciones a practicamente todas las formas de almacenamiento de informacion que se usan.

Por otra parte, una aplicacion pensada para ser util durante muchos años (la red bitcoin, por ejemplo, lleva mas de una decada funcionando) debe estar diseñada pensando en el futuro, y en ser compatible con posibles mejoras o añadiduras que vaya sufriendo la red. Ya que la estructura de la red como tal no cambiara (al menos es imposible predecir algo asi) hay que enfocarse en la implementacion de nuevas funciones. Es por esto que nosotros usaremos un protocolo numerado. Asi, en caso de mejoras dentro de la red, cada usuario sabra de inmediato que hay un protocolo mas avanzado que incluyen funciones que el suyo desconoce, pero sin detener su funcionamiento.

Comentarios

Entradas populares de este blog

Funcionamiento interno

Como funciona una criptomoneda?

Año nuevo, nuevo nombre