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
En 2019, 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.
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