Grin, una criptomoneda reciente basada en el protocolo Mimblewimble, sobresale entre las demás monedas digitales centradas en la privacidad por una característica peculiar: para enviar o recibir Grin no es necesaria una dirección de billetera, por lo menos, tal como las conocemos.
Las criptomonedas son una tecnología que recién comienza a evolucionar; aunque ya tienen algunos años de existencia, su adopción es limitada debido a muchos factores. La facilidad de uso es uno de ellos, pues generalmente para recibir o enviar monedas virtuales hace falta disponer de una dirección de billetera, que es una cadena de entre 26 y 35 caracteres alfanuméricos que identifica a las partes involucradas en cada transacción.
Aparte de ofrecer una privacidad mas robusta, al ocultar completamente el monto involucrado en la transacción y el origen de esta misma, Grin se pone un punto a favor de la usabilidad prescindiendo de las direcciones, algo que deberían emular las demás criptomonedas del espacio.
Linux, máquinas virtuales y Grin
En este tutorial aprenderemos a instalar una maquina virtual de Linux en Windows, que usaremos como base para mostrar dos maneras de recibir monedas Grin. Para ello tenemos dos formas: recibir por medio de un archivo y hacerlo usando un escucha HTTP, para lo que es necesario estar ejecutando un nodo de Grin y un escucha de la billetera.
Vamos a emplear el hipervisor VirtualBox de Oracle para crear y ejecutar nuestra máquina virtual, y haremos la instalación de la versión de Linux llamada Linux Mint.
Es cierto que ya está disponible una versión de la billetera de Grin para Windows, pero lo que perseguimos con este material es que el lector con menos experiencia se familiarice también con los conceptos de maquina virtual y tenga una primera aproximación al sistema operativo creado por Linus Torvalds.
Los usuarios de Windows 10 pueden sacar provecho perfectamente de Hyper-V, el hipervisor nativo de Microsoft para la administración de maquinas virtuales. Se sugiere que el equipo disponga al menos de 8 GB de RAM en este caso, pues a la VM de Linux Mint se le adjudicarán 2GB.
Hablemos un poco acerca de Linux
Linux Mint es una de las variantes del sistema operativo Linux, uno de los más difundidos en el mundo, el cual tiene su origen en Unix, un S.O. de servidores que data de 1969. Unix, que se llamó al principio UNICS (Uniplex Information and Computing System), revolucionó el mundo de la computación al ofrecer por primera vez un ambiente simulado de multitareas.
En el año 1991, Linus Torvalds desarrolló Linux, basándose en el software del terminal que utilizaba para acceder al sistema Unix de la Universidad de Helsinki, donde cursaba estudios. Al ser de código abierto, Linux vería nacer luego varias versiones de sí mismo, como Ubuntu, Debian y Fedora.
Esta característica ha hecho de Linux el sistema operativo de elección para los hackers, pues les permite modificarlo a su gusto y adaptarlo a sus actividades ilegales. Por otro lado, existe una cantidad de distribuciones de Linux que los piratas informáticos pueden usar directamente para realizar sus ataques, de modo que todo especialista en ciberseguridad deberá manejar conocimientos avanzados en varias de ellas.
Máquinas virtuales, sistemas reales
Uno de los grandes avances en el sector computacional lo constituye la virtualización. Lo que empezó como la clonación digital de equipos físicos ha dado paso a toda una industria. Una máquina virtual (VM) es un ambiente programado que emula a la perfección la operación de un sistema operativo y el hardware asociado, de modo que en ese entorno pueden ejecutarse todas las aplicaciones que funcionarían en un equipo real.
Las ventajas que se derivan de la virtualización son varias, sobre todo en la reducción de costos. Imagine por un momento una sala de servidores perteneciente a una compañía en particular. Al virtualizar los servidores se ahorra en energía eléctrica consumida por los equipos y en la refrigeración de la sala. El espacio puede dedicarse a otras actividades. La portabilidad de los sistemas virtualizados brinda además una manera rápida y efectiva de recuperase ante eventos de fuerza mayor.
Así como abrimos un documento en Word, podemos ejecutar una maquina virtual usando un programa llamado hipervisor. Seleccionando y abriendo un archivo tenemos en segundos una estación de Mac o Windows, o un servidor web Apache bajo nuestro comando.
Al día de hoy se pueden virtualizar redes completas, incluyendo los enrutadores, conmutadores y puntos de acceso, entre otros. Entre los paquetes más usados para crear maquinas virtuales en computadoras personales están VMware Workstation y Virtual Box, de Oracle, que será empleado en este tutorial.
Es momento de comenzar
1. En principio descargaremos Virtual Box (Windows host de 64 bits) y procederemos a su instalación. La misma es muy sencilla, no exige ninguna configuración particular. Cuando el programa de instalación le pregunte si desea añadir los controladores USB, los servicios de red y otros complementos haga clic en Install y prosiga hasta finalizar.
2. Ahora crearemos nuestra maquina virtual Linux Mint. Descargaremos la versión Cinnamon de 64 bits de Linux Mint Tessa que viene en forma de imagen de disco (archivo .iso).
3. Una vez tengamos la imagen de Mint, entraremos al menú Machine de Virtual Box y haremos clic en New. Veremos el cuadro siguiente, donde escogeremos el tipo y versión del sistema operativo a instalar (Ubuntu / otro Linux 64 bits), el directorio de instalación y pondremos un nombre a la máquina virtual.
4. A continuación, asigne 2048 MB de memoria a la nueva VM. Si el equipo anfitrión posee más memoria, suba hasta los 4Gb. Dejaremos el directorio de creación del disco virtual como está y pondremos un tamaño de 20Gb para el nuevo disco. Hacemos clic en Create y esperaremos unos minutos.
Disponemos ahora de un disco virtual en donde podremos instalar el sistema operativo que queramos. Es como si tuviéramos un equipo completamente nuevo, sin ningún software en él.
Instalación de Linux Mint
1. Ya creado el disco virtual, procederemos a instalar Linux Mint. A la izquierda de VirtualBox aparece la que será nuestra VM de Mint. Hacemos doble clic allí, o pulsamos la flecha verde en la interfaz de VirtualBox para iniciar el proceso.
2. VirtualBox nos mostrará una ventana donde indicaremos la ubicación del archivo imagen de Linux Mint que descargamos anteriormente.
3. Haremos clic en Start y en momentos tendremos una maquina virtual de Linux Mint ejecutándose ante nosotros.
La VM que vemos ahora esta corriendo sobre un disco vivo, es decir, nos servirá interactuar con todas las características de Linux Mint, pero no podremos guardar los cambios efectuados. Cada vez que arranquemos la maquina virtual desde la imagen de Mint todas las modificaciones se habrán perdido.
4. Para tener una VM que conserve todo lo que hagamos en ella, haremos doble clic en Install Linux Mint. Aceptaremos la instalación de software de terceros, controladores de WiFi y otros, hasta finalizar.
5. A continuación, abriremos Firefox en la máquina virtual para descargar el archivo grin-v2.0.0-linux-amd64.tar.gz, donde viene el nodo de Grin. Haga clic en la imagen siguiente para ir al sitio de la descarga:
6. Ya obtenido el archivo del nodo, vamos a la carpeta Downloads, hacemos clic derecho en el espacio vacío y pulsamos en “Open in Terminal”. En el terminal vamos a ejecutar los siguientes comandos.
7. Después de esto debemos ejecutar el nodo emitiendo el comando “grin”. Si no ocurre nada, entre al directorio grin y ejecute el comando de esta forma:
Veremos la siguiente información:
Debemos dejar que el nodo sincronice, lo que tardará entre 10 y 15 minutos, tras lo cual estaremos ejecutando un nodo de Grin formalmente.
8. Procedamos a descargar el software de la billetera (grin-wallet-v2.0.0-linux-amd64.tar.gz) haciendo clic en la imagen que sigue:
9. Abrimos de nuevo una ventana de terminal en el directorio Downloads y ejecutamos los comandos que aparecen en la imagen a continuación.
Deberemos ingresar y confirmar una contraseña y también anotar en papel la frase semilla. La billetera solicitará la contraseña cada vez que vayamos a realizar una transacción.
10. Para ver el saldo de nuestra billetera hacemos así:
Recibir Grin por correo electrónico
1. Vamos a usar Grinmint para simular que alguien nos envía un pago de Grin como un archivo. Ingresamos al sitio de Grinmint con nuestra cuenta de email, hacemos clic donde dice Payouts y luego en Withdraw / Finalize.
2. Veremos la siguiente ventana. El retiro mínimo es de 1 Grin. Recibiremos un correo electrónico con un archivo de transacción anexo que deberemos cargar a la billetera.
Luego de eso, tendremos una hora para finalizar la transacción.
3. A los pocos segundos revisaremos nuestro correo electrónico y entraremos un mensaje similar al siguiente, con un archivo de transacción de Grin que debemos descargar. El archivo transaccional comienza por “tx” seguido de una cadena de caracteres alfanuméricos. Para efectos del tutorial lo llamaremos transact_grin.
4. En la ventana de terminal donde esta nuestra billetera inicializada, ejecutamos el comando:
./grin-wallet receive –i transact_grin
En ese mismo directorio se creará el archivo transact_grin.response, que cargaremos en Grinmint entrando a Withdraw / Finalize y luego a Finalize Email.
5. Volvemos a nuestra maquina virtual de Linux Mint y chequeamos la operación en la ventana de terminal de nuestra billetera con el comando ./grin-wallet info. La transacción se mostrará esperando confirmación; aproximadamente 10 minutos después el saldo de la billetera estará actualizado y podremos disponer del mismo.
Recibir Grin mediante escucha de HTTP
El primer método, donde enviamos manualmente los pagos de Grin usando el correo electrónico, no es precisamente sencillo, pero aprendimos varias cosas útiles en el camino. Con esta segunda forma vamos a simplificar un poco las cosas.
Mediante un escucha de HTTP lo que hacemos es habilitar a nuestro equipo para que reciba automáticamente las transacciones de Grin que nos sean enviadas y nuestra billetera las acepte. Lo único que deberemos hacer será chequear el saldo de la billetera con el comando ya visto.
Ya nuestro nodo de Grin está funcionando y la billetera ha sido inicializada. Lo siguiente será configurar una IP estática en la maquina virtual y redireccionar el puerto 3415 de TCP en el enrutador para que acepte las transacciones de Grin.
Los puertos son como entradas y salidas que habilita o deshabilita el enrutador para que pase por ellas el tráfico que se considera útil. Las páginas web, los juegos interactivos y demás aplicaciones los usan todo el tiempo. El enrutador hace su trabajo de manera automática, pero a veces hace falta abrir manualmente una de estas salidas/entradas. Veamos el proceso:
1. Entramos en la configuración de red de la VM de Linux Mint y en Adapter 1 cambiamos a Bridged Adapter.
2. Para la redirección del puerto 3415 TCP vamos a la configuración de nuestro enrutador de Internet. Generalmente encontraremos los detalles para hacer esto en la sección WAN del dispositivo, o en una pestaña que dice Port Forwarding.
Allí ponemos el nombre del servicio que vamos a admitir por el puerto (Grin Wallet), en el rango de puertos y puerto local colocamos 3415. Finalmente en Local IP escribimos la dirección estática que aplicamos en Mint y especificamos TCP como el puerto que se va a abrir.
3. Para verificar que el Puerto este configurado correctamente, vamos al sitio canyouseeme.org, indicamos el puerto 3415 y hacemos clic en Check Port. Deberemos ver un mensaje que diga “Success: I can see your service on <Your IP> on port 3415”, lo que significa que la escucha en el puerto 3415 quedó habilitada.
Ahora, cuando alguien vaya a enviarnos un pago mediante escucha de HTTP, deberá poner como destinatario lo siguiente: http://192.167.1.36:3415, suponiendo que 192.167.1.36 fuese nuestra dirección estática de Mint. Veremos cómo hacer esto más adelante.
4. Seguidamente abrimos un terminal, ejecutamos el nodo de Grin y en otra pestaña dejaremos la billetera activa para la escucha HTTP mediante el comando que aparece en la imagen:
Si el terminal muestra que la billetera escucha a 0.0.0.0:3415, entonces se encuentra lista para recibir Grin. En la sección que sigue veremos cómo enviar las monedas, tanto por archivo transaccional de correo electrónico o por redirección del puerto 3415.
5. Para chequear si hemos recibido un pago, abrimos otra instancia de terminal y emitimos el comando ya conocido.
Cómo enviar Grin y finalizar las transacciones
Habiendo llegado hasta aquí, hemos ganado suficiente entendimiento acerca de cómo funciona la billetera de Grin en Linux Mint. Esto nos hará más sencillo utilizar el terminal para realizar transacciones de ahora en adelante.
Enviar por archivo de transacción
Para que este método funcione no es necesario que el receptor de los fondos esté en línea al mismo tiempo que el emisor, como se ha dicho usualmente. Lo que sí debe hacerse es finalizar la transacción en el marco de tiempo de una hora, o la misma se cancela.
1. Entramos en el terminal donde esta activa nuestra billetera de Grin y emitimos este comando:
./grin-wallet send -m file -d transact_grin.tx 0.1
El nombre del archivo de transacción (transact_grin) puede ser el que queramos; se sugiere usar uno que nos recuerde a quién pagamos o qué compramos con esas monedas. El número al final de la instrucción (0.1) es la cantidad de Grin que estamos enviando.
2. Nuestra billetera generará un archivo con ese nombre, que posteriormente enviaremos como anexo al receptor usando el correo electrónico.
Cómo recibir los fondos
1. El destinatario de las monedas Grin deberá descargar el archivo de transacción anexo al mensaje que le enviamos notificándole del pago. Para agregar los fondos a su billetera usará el comando:
./grin-wallet receive -i transact_grin.tx
2. Como resultado, quien recibe los fondos obtendrá un archivo llamado transact_grin.tx.response, que enviará de vuelta al pagador antes de que transcurra una hora. El pagador finalizará la operación en el terminal de su billetera con el comando:
./grin-wallet finalize -i transact_grin.tx.response
3. Por ultimo, el emisor del pago verifica su nuevo saldo con el comando ./grin-wallet info. En vista de que este método implica el envío y recepción de correos electrónicos en una corta ventana de tiempo, el que ambas partes estén simultáneamente en línea facilita dicho intercambio, agilizando la transacción.
Seguidamente, veremos cómo, mediante una ligera variación, podremos enviar las monedas de Grin usando la escucha de HTTP.
Enviar Grin a un receptor con escucha HTTP activada
Cuando el receptor de los fondos tiene configurada la escucha por el puerto 3415 de TCP podremos realizar el pago con Grin en un solo paso. Tanto el nodo de Grin como la billetera deben estar ejecutándose en el equipo del destinatario y en el nuestro.
1. Usando el terminal de la billetera Grin, emitimos este comando:
./grin-wallet send -d http://dirección_IP:3415 monto
La dirección IP debe corresponder a la dirección estática configurada en el equipo receptor. Si quien va a recibir el pago no ha activado la escucha HTTP en su billetera (./grin-wallet –e listen) la operación fallará.
La billetera intentará efectuar el pago por alrededor de un minuto, para luego mostrar el mensaje de error “Wallet command failed…”. Cuando la transacción ha salido bien, el terminal nos dirá en cambio “Command ‘send’ completed successfully” a los pocos segundos.
Al igual que sucede con las direcciones de Bitcoin, si enviamos los fondos a un número IP equivocado, pero que es parte de una escucha activa de HTTP para la billetera de Grin, la transacción se llevará a cabo. Todavía no deben existir muchas personas con nodos de Grin activos, pero siempre es bueno realizar las transacciones poniendo la debida atención.
Adiós máquina virtual, hola subsistema de UNIX
Una alternativa a la máquina virtual de Mint es aprovechar el Subsistema de Windows para Linux (WSL), disponible en Windows 10. Aunque Microsoft recomienda el uso de WSL sólo para fines de desarrollo y no como un entorno de escritorio, es posible instalar y ejecutar un nodo de Grin y su billetera en dicho subsistema.
Para utilizarlo haremos de esta forma:
1. En Windows 10, vamos al Panel de Control, luego a Programas y características, entramos en Activar o desactivar características de Windows. Hacemos scroll hacia abajo y seleccionamos “Subsistema de Windows para aplicaciones basadas en UNIX” y damos clic en Ok. El subsistema se instalará y para que funcione deberemos reiniciar el sistema luego.
2. Ahora abrimos la Windows Store y buscamos ‘Ubuntu’. Podemos escoger entre tres versiones de este sistema operativo. La instalación es igual a la de cualquier otra app de la tienda.
3. Al final, tendremos disponible un terminal de Ubuntu al que podremos acceder por línea de comandos (cmd), por la interfaz de PowerShell y a través del menú Inicio. Con una serie de instrucciones “sudo” será posible instalar el nodo de Grin y la billetera.
Billetera Grin++
Ya Windows dispone también de una manera para almacenar monedas Grin, la billetera Grin++. El paquete de instalación está disponible para su descarga aquí. Grin++ permite las mismas formas de enviar y recibir pagos vistas anteriormente: mediante archivo de transacciones y usando escucha de HTTP.
Además, Grin++ incluye una tercera y más familiar forma de realizar transacciones: usando una dirección de billetera, proporcionada por la opción Grinbox, que también se encuentra integrada en la billetera de Grin para Linux llamada grin713.