jueves, 11 de julio de 2019

Computadora del programa Apolo de la NASA fue reprogramada para minar Bitcoins

Entre los muchos avances tecnológicos del proyecto Apollo de la NASA para llevar al hombre a la Luna se encuentra la Apollo Guidance Computer (la computadora de guía del Apollo), AGC por sus siglas en inglés que voló a bordo de la nave espacial Apollo. 



En una época en la que la mayoría de las computadoras tenían el tamaño de un refrigerador, sino de una habitación, la AGC pesaba solo alrededor de 70 libras. Fue una de las primeras computadoras en utilizar circuitos integrados.



Apollo Guidance Computer para minar bitcoin
Un equipo de historiadores informáticos se hizo cargo de uno de las AGC originales y la hizo funcionar. Un miembro del equipo, Ken Shirriff, decidió ver si la computadora podía usarse para la minería de bitcoins.
apollo guidance computer replica
La minería es una parte clave del proceso para mantener el libro mayor de transacciones de bitcoins o blockchain. Para obtener el derecho de agregar un bloque a la cadena de bloques, debes resolver un problema difícil: encontrar un bloque cuyo hash SHA-256 comience con un número mínimo de ceros. 

La única forma conocida de lograr esto es mediante la fuerza bruta: los mineros crean un bloque con una función aleatoria y calculan su valor hash. Si el valor de hash no tiene suficientes ceros iniciales, el minero cambia el nonce y lo intenta de nuevo.

El número requerido de ceros se ajusta automáticamente para que la red produzca un nuevo bloque cada 10 minutos, en promedio. Actualmente, el hash de un bloque necesita al menos 18 ceros (en su representación hexadecimal) para ser aceptado por la red, lo que se traduce en alrededor de 1022 intentos para encontrar un bloque válido.

Hoy en día, la mayoría de las operaciones de minería de bitcoin se realiza mediante hardware especializado capaz de calcular trillones de hashes por segundo. El software de Shirriff para la Apollo Guidance Computer era bastante más lento que eso: cada cálculo de hash de bitcoin demora aproximadamente 10 segundos.

La Apollo Guidance Computer no es un minero de bitcoin muy bueno


La computadora es tan lenta que tomaría aproximadamente mil millones de veces la edad del universo para minar con éxito un bloque de Bitcoin”, escribió Shirriff.

Esto refleja principalmente 50 años de progreso en hardware de computación. Gracias a la ley de Moore, los chips modernos tienen muchos más transistores y pueden operar a velocidades de reloj mucho más altas. Los ASIC de minería personalizada pueden calcular una gran cantidad de hashes en paralelo.

Pero Shirriff también tuvo que luchar con la idiosincrasia de la AGC que hizo que fuera una mala opción para la minería de bitcoin. Por ejemplo, la AGC utilizó una palabra de 15 bits, en contraste con las computadoras modernas que generalmente usan palabras de 32 o 64 bits. El algoritmo SHA-256 realiza muchas operaciones de 32 bits, por lo que Shiriff tuvo que dividir cada entero de 32 bits en tres partes (una parte de 4 bits y dos partes de 14 bits) y realizar cálculos sobre ellas por separado.

El AGC también careció de las instrucciones de cambio y rotación que son estándar en las computadoras modernas, y que se usan mucho en un cálculo SHA-256, lo que obliga a Shirriff a escribir subrutinas para realizar estas operaciones.

La memoria limitada de la AGC también fue una desventaja:

La AGC, como la mayoría de las computadoras de la década de 1960, usaba memoria de núcleo magnético, almacenando cada bit en un pequeño anillo de ferrita magnetizado. Como la memoria central era bastante voluminosa, el AGC tenía solo 2K palabras (aproximadamente 4K bytes) de RAM. 


El esquema de direccionamiento de AGC hizo las cosas más complicadas, ya que solo podría acceder a 256 palabras a menos que usara un mecanismo de cambio. El problema es que el algoritmo SHA-256 utiliza ocho valores hash (32 bits), una tabla de mensajes de 64 palabras y 8 palabras de valores intermedios. 


Estos tres arrays solos usaron 240 palabras AGC, dejando aproximadamente 16 palabras para todo lo demás (valores temporales, direcciones de retorno de subrutinas, contadores de bucles, punteros, etc.) Logré que todo encajara en un banco reutilizando estas 16 palabras para múltiples fines, pero pasé mucho tiempo en la depuración de problemas cuando una variable invadía una ubicación aún en uso.

Esta no es la primera vez que Shirriff implementa la minería de Bitcoin en hardware antiguo. Hace unos años, implementó la minería de Bitcoin en una vieja computadora IBM 1401 desde mediados de los años sesenta. Esta máquina era incluso más lenta que el AGC, demorando 80 segundos en calcular un solo hash. También programó un Xerox Alto de la década de 1970 para minar bitcoins, ya que podía calcular 1.5 hashes por segundo.

¿Qué opinas de esta creación? Hazme el favor de compartir el post en las redes sociales.


Fuente: Ars Technica

No hay comentarios.:

Publicar un comentario

Tu opinión es importante para mí, porque me ayuda a mejorar. Si te gustó el articulo o tienes alguna sugerencia, déjame tu comentario con tu nombre para poder responderte tan pronto como pueda.