Entradas

Codigo fuente y binarios version 0.1.0

Imagen
Finalmente ha llegado el dia de publicar el codigo fuente por primera vez, y hacerlo publico. Hemos abierto un proyecto en Github para hacer el seguimiento del mismo: Noso - Github Si lo que quieres es descargar el ejecutable: Noso.rar - Google Drive Empezamos con la publicacion de la version 0.1.0 ya que cuenta con todo lo necesario para ser funcional, aunque requiere mucho maquillaje (mejoras en la interfaz grafica) y pruebas de testeo. Sin embargo, salvo el mercado Nos/BTC que ira incluido en la red, ya todo esta alli. Una vez ejecutado el programa, hay que añadir un nodo al que conectarse (esta version beta trabaja con un solo nodo para facilitar las pruebas)  Se pueden hacer dos instalaciones en dos carpetas diferentes y abrirlos: en un activar el servidor y en el otro teclear en la linea de consolas: addnode localhost Esto realizara una conexion simulada y nos permitira iniciar las pruebas con el minado, envio de monedas, personalizacion, etc. Mientras seguimos con el desarrollo

Primer video en funcionamiento

Imagen
En vista del aumento de la operatividad, decidimos pubicar un video de las pruebas que estamos llevando a cabo para garantizar el correcto funcionamiento. La dificultad de minado ha sido disminuida radicalmente para aumentar la velocidad de las pruebas. Nos escontramos en la fase de "maquillaje", añadiendo comodidad para el usuario a la hora de poder ejecutar las acciones mas comunes: conectarse a la red, enviar fondos, consultar transacciones, etc. Eso si, practicamente la totalidad de las funcionalidades ya se encuentran implementadas y se pueden usar desde la linea de comandos.

Cambios y novedades

Han pasado 10 dias desde nuestro ultimo post, pero eso no ha significado que hemos dejado de trabajar en el proyecto. Antes, al contrario, hemos añadido nuevas caracteristicas a Noso y mejorado algunas de las existentes. La modificacion mas importantes es la implementacion de Base58 en las direcciones; esto permite una mayor dificultad de colusion entre direcciones de diferentes usuarios; con la nueva implementacion, existen en teoria aproximadamente 1x10 59 diferentes direcciones en NOSO, cien mil millones (100.000.000.000) de veces mas que hasta ahora. Eso es una gran mejora! El nuevo formato de direccion nos lleva a que, desde luego, la direccion de desarrollador (NOSO MASTERID) sea nueva tambien: NUBy1bsprQKeFrVU4K8eKP46QG2ABs Para evitar mas dependencias, tuvimos que desarrollar nuestra propia libreria criptografica para llevar a cabo estas operaciones, esa es una de las razones por las que nos hemos demorados varios dias, amen de las fiestas tipicas de estas fechas (Esperamos, a

Año nuevo, nuevo nombre

Imagen
Feliz año a todos. Como breve comentario off topic: Esperemos que este 2021 nos ayude a todos, como humanidad, a empezar a superar el desafio que el ultimo año nos presento. Tras una reunion de fin de año, y con varias propuestas sobre la mesa en vista de la inminencia de la publicacion de la primera version publica "oficial", elegimos el nombre definitivo para nuestro proyecto: Noso (NOS) A parte de todas las funcionalidades referentes a la conectividad y mantenimiento de la red, la version 0.0.1 ya incluye el proceso de firma y verificacion criptografica, ya que es necesario para la validacion de los updates que publicaremos mas adelante. De momento, la idea es testear a gran escala la estabilidad e interconectividad de la red. Hasta la version 0.1.0 no sera posible el minado del primer bloque. La reunion de fin de año tambien dejo nuestra primera hoja de ruta definida (las fechas son topes) para las versiones y la principal inclusion que cada una de ellas tendra: 6 de Ener

AutoUpdate de desarrollador.

P4A11B875631DB65EF270D7BFFCB4B7D814 Es el valor de la constante AdminHash; tambien es el 'minero' del bloque 0 y, por tanto, la primera direccion del sumario. Esta es nuestra direccion publica. Cualquier mensaje recibido en la red, autentificado por esta direccion publica, proviene de nosotros. Esto nos permite poder enviar las ultimas versiones del programa a los usuarios de la red y que todos sepan que es una version original. Desde luego, los usuarios pueden optar por descargarlo e instalarlo  automaticamente o hacerlo manualmente mas tarde, en caso de que prefieran primero ver los cambios que incluye o ver el codigo fuente. Normalmente, el programa podra seguir funcionando en la red aunque se disponga de una version antigua de el, ya que a partir de la version 0.0.1 toda la conectividad esta incluida. El proceso es el siguiente: Una vez tenemos completada una nueva version, esta es comprimida junto con su actualizador en un archivo .ZIP de nombre 'mpupdatex.x.x.zip'

Funcionamiento interno

Los diagramas de flujos permiten visualizar como es el funcionamiento logico interno de las aplicaciones, lo que ayuda a un diseño mas fluido, una deteccion de errores mas sencilla y una capacidad de mejora escalable. Empezemos con el inicio del programa: InicializarFormulario();  Crea e inicializa todos los controles necesarios para el funcionamiento del programa, tanto visuales (memo, edit, etc) como no visuales (stringlist, TCPServer, etc). VerificarArchivos(); Verifica que los archivos necesarios existan, y si no los encuentra, los crea con la informacion por defecto, al mismo tiempo que almacena en memoria la informacion necesaria. InicializarGUI();  Inicializa la informacion que sera mostrada al usuario en pantalla. InitTime();  Inicializa el tiempo, de manera que el programa sepa cual es su hora local con respecto al tiempo UTC. Esto permite mas adelante poder usar siempre la hora del reloj interno para las operaciones, el cual es mucho mas facil de obtener que hacer peticiones

El minero

Imagen
Aunque la mayoria, si no todas, las carteras de criptomonedas incluyen las funciones para minar la moneda dentro de ella, tambien existen aplicaciones externas desarrolladas unicamente para minar bloques, esto es, encontrar el valor ' nonce ' cuyo hash incluye la respuesta al problema solicitado. Aunque ya lo habiamos comentado antes, no esta demas recordar como es el proceso de mineria en una criptomoneda: Al minarse un bloque, este produce un hash. Un determinado numero de caracteres iniciales de dicho hash (dependiendo de la dificultad actual de la red) seran el problema a buscar para resolver el siguiente bloque. Como se consiguen estos caracteres? Con una combinacion de 6 letras mayusculas aleatoria, seguido de la direccion paskal del minero y por ultimo un numero entre 100000000 y 999999999. El minero debe probar diferentes combinaciones hasta que el hash de una de ellas contenga el problema planteado. Como el problema esta formulado con la informacion del bloque previo,