Cómo extraer bitcoins usando una instancia de AWS EC2 ...

Fuente de la imagen: AWS

Con toda la charla sobre la bifurcación Segwit2x (que ahora se ha pospuesto), decidí mojarme en las criptomonedas mineras.

Inicialmente, elegí extraer éter, luego monedas Monero, en servidores Ubuntu 16.04 usando sus instancias de computación acelerada, pero mi curiosidad se apoderó de mí y comencé a preguntarme qué tomaría para extraer bitcoins reales.

Todos los foros y blogs que busqué aconsejaron incluso no intentarlo. Tanto es así, que no pude encontrar ningún tutorial reciente sobre la minería de GPU para bitcoin.

Lo aproveché como una oportunidad para crear uno yo mismo.

Así es cómo:

Nota: la gente lo tiene correcto. La minería de Bitcoin en la nube sin un minero ASIC no genera ningún beneficio. Aún así, es un experimento divertido.

Paso uno: Obtenga alojamiento en la nube.

a) Regístrese en AWS.

Primero lo primero, regístrese para obtener una cuenta gratuita en Amazon Web Services. AWS ofrece máquinas virtuales, almacenamiento y una gran cantidad de otros servicios, en algunos casos, de forma gratuita durante la prueba inicial de 12 meses.

Advertencia: la verificación de la cuenta puede demorar hasta 24 horas.

b) Navegue a la consola de servicios.

Una vez que esté dentro, navegue a la página de inicio y seleccione EC2.

Esto lo lleva al tablero de instrumentos EC2:

El panel de control le da acceso a cualquier cosa y todo lo que necesite sobre el lanzamiento y el mantenimiento de su VM. Incluyendo seguridad. Vamos a lidiar con eso a continuación.

Paso dos: crear configuraciones de seguridad.

a) Configurar un grupo de seguridad.

En el menú del lado izquierdo, en la parte inferior, debajo del submenú "Red y seguridad", seleccione los grupos de seguridad, luego haga clic en el botón azul brillante del grupo "Crear seguridad" en la barra de navegación superior.

Aparecerá un modal.

Dé al grupo un nombre y una descripción, y mantenga la VPC a la configuración predeterminada. Debajo de eso, verá un panel con pestañas que le pide que cree algunas reglas de acceso para el grupo. No te preocupes por eso. Aquí también mantendremos la configuración predeterminada. Nos interesan principalmente las Reglas de entrada, así que seleccione la pestaña Entrada y haga clic en Agregar regla.

Crearemos tres en total:

Para la regla SSH, debe seleccionar "Mi IP" en la fuente y el área de entrada completará la dirección IP de su dispositivo. Luego haga clic en crear.

b) Crear un par de claves.

Ahora, bajo el mismo submenú "Red y seguridad",

querrá hacer clic en "Pares de claves" y luego haga clic en el "Crear par de claves" azul ubicado en el navegador superior de esa página.

Una vez que presione crear, debería ver el archivo .pem en sus descargas.

El contenido de este archivo le permite conectarse con la instancia remota que iniciará en el siguiente paso. Coloque este archivo en un lugar seguro y donde pueda recordarlo, ya que lo necesitará cada vez que intente volver a conectarse con su servidor.

Paso tres: Obtenga un servidor Ubuntu en funcionamiento.

Entonces, antes de comenzar, aquí está la cosa. La potencia informática acelerada, incluso en la nube, no es barata.

En efecto, las instancias EC2 funcionan como máquinas virtuales alquiladas con capacidades de transferencia directa a tarjetas gráficas estelares. Puede usar Azure o Google Cloud Computing, pero para ser honesto, si es un usuario de MAC que está más familiarizado con Linux y busca tarifas por hora más bajas, AWS parece ser la mejor opción.

¿No puedo usar Virtualbox y ejecutar un servidor gratis?

La respuesta: depende de su hardware y de si sabe cómo transferir las GPU de su hardware a una VM Virtualbox. Eso puede llevar algo de tiempo, todavía se considera muy experimental, y la mayoría de los dispositivos comerciales (como mi Macbook) no tienen GPU capaces de generar hash a un ritmo rápido.

AWS se encarga de virtualizar el hardware por usted.

Pero, de nuevo, sí, las instancias EC2 del sabor g2, g3 y p2 pueden costarle un centavo. También se nos advirtió que competiremos con granjas mineras bitcoin masivas que usan mineros ASIC que eliminan la minería de GPU del agua.

Entonces, esto es más un experimento que otra cosa. Sin embargo, hagamos esto.

Afortunadamente, AWS le permite ofertar en instancias con varias GPU a precios por debajo del mercado

a) Inicie una solicitud de spot para una instancia EC2.

Vaya a Solicitudes puntuales en el menú lateral y haga clic en el botón "Solicitar instancias puntuales" en la barra de navegación superior.

b) Elija un AMI.

A continuación, busque una Imagen de máquina de Amazon (AMI), básicamente una plantilla para su servidor que viene preestablecida con ciertas instalaciones y configuraciones de software, que le ofrece la última versión de Ubuntu (16.04 aka Xerial).

Ya tengo algunos guardados:

Puede encontrar el que estoy usando para este tutorial haciendo clic en Buscar AMI, seleccionando "AMI de la comunidad" en el menú desplegable e ingresando "ami-cd0f5cbx" en la barra de búsqueda.

c) Elija un tipo de instancia.

Los tipos de instancia que ofrecen tarjetas NVDIA pertenecen a la familia g2, g3, p2. He jugado con las tres familias, y aunque a todos les va bastante bien con la minería de monedas de criptomoneda, p2 ofrece con mucho el mayor impacto.

Desafortunadamente, también es el más caro de los tres. Los precios de oferta por hora fluctúan entre $ 1.4– $ 1.7, dependiendo de la hora del día. He estado haciendo un seguimiento de los precios óptimos y, como regla general, puede encontrar precios más bajos para las instancias de g2 después de la medianoche y precios más bajos para p2 antes del mediodía.

AWS también ofrece un historial de precios al que puede consultar:

Voy a ir con la instancia p2 de tamaño medio (p2.8xlarge). Esto le dará 8 GPU para trabajar.

Otras especificaciones para esta instancia:

  • 8 tarjetas NVIDIA K80
  • 32 CPU virtuales
  • 488 GiB de Ram
  • Comunicación entre pares entre GPU

Bam

Estas instancias funcionan bien con el aprendizaje profundo y los juegos, por ejemplo.

d) Elija su estrategia de asignación y fijación de precios.

Es mejor quedarse con los detalles. Si tienes el corazón, puedes optar por establecer un precio máximo. Tenga cuidado, su instancia puede finalizar si los precios de oferta superan su precio máximo.

Al decir eso, AWS no cobrará por la hora interrumpida. Camina ligeramente.

e) Configure sus ajustes de almacenamiento

No descargaremos ninguna cadena de bloques, por lo que no necesitamos demasiado almacenamiento. El almacenamiento raíz 20GiB + debería ser el truco para lo que estamos tratando de lograr.

f) Configure las configuraciones de seguridad.

Ahora elija el par de claves y el grupo de seguridad que creó en el paso anterior y haga clic en siguiente.

g) Revise su solicitud.

Asegúrese de que todo esté como lo desea y haga clic en iniciar

Aparecerá un modal para informarle que su solicitud se ha procesado.

h) Espere a que se cumpla su solicitud.

Ahora, esta parte puede generar errores, muy probablemente debido a las limitaciones puntuales para los usuarios de nivel libre. Si se encuentra con este tipo de error, puede ponerse en contacto con el soporte de AWS e iniciar una solicitud de límite de aumento.

Consejo: cuando presente el ticket de soporte, solicite ser contactado por teléfono. Acelera bastante el tiempo de servicio.

Finalmente, su solicitud debe cumplirse.

Paso cuatro: conéctese a su servidor Ubuntu

a) Verifique el estado de su instancia.

En el menú de la izquierda, seleccione EC2 Dashboard nuevamente y haga clic en Ejecutar instancias.

b) Obtenga el DNS público para su instancia.

En el menú superior, haga clic en el botón Acciones, luego elija conectar. Esto debería mostrar instrucciones sobre cómo SSH en su nuevo servidor.

No te confundas por la inconsistencia. A la derecha, según los pasos anteriores, el archivo .pem debería ser tutorial-keys.pem.

c) Proteja su archivo .pem de sobreescritura accidental.

¿Recuerdas el archivo .pem (tu par de claves) que descargaste anteriormente? Abra una terminal e ingrese el comando:

chmod 400 "/path/to/your/file.pem"

Entonces, por ejemplo, pongo este archivo .pem que estoy usando en mi carpeta Utilidades, ubicada en mi directorio de Aplicaciones:

d) SSH en su instancia.

ssh -i "/path/to/your/file.pem" ubuntu@your-public-DNS.compute-1.amazonaws.com

Debería verse más o menos así:

e) Escriba "yes" + enter para continuar conectando.

f) Y estás dentro.

Paso cinco: Instalar dependencias del proyecto

a) Verifique las actualizaciones de software de Ubuntu 16.04.

sudo apt-get update

Xenial tiene algunas actualizaciones ...

b) Instale las dependencias necesarias para ejecutar un minero.

Ahora, admito, esto podría ser un poco exagerado. Algunas de estas dependencias son solo opcionales. Sin embargo, si desea experimentar con diferentes mineros y potencialmente otras criptomonedas además de bitcoin, esta lista debería cubrirlo:

sudo apt-get install -y freeglut3-dev libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev gcc make libcurl4-openssl-dev autoconf git screen libncurses5-dev opencl-headers build- esencial protobuf-compiler libprotoc-dev libboost-all-dev libleveldb-dev hdf5-tools libhdf5-serial-dev libopencv-core-dev libopencv-highgui-dev libsnappy-dev libsnappy1v5 libatlas-base-dev cmake libstdc ++ 6-4.9- dbg libgoogle-glog0v5 libgoogle-glog-dev libgflags-dev liblmdb-dev python-pip gfortran libjansson-dev uthash-dev autogen libtool pkg-config

Paso seis: descargue e instale los controladores NVIDIA / NVIDIA

a) Descargar NVDIA de la web

wget http://us.download.nvidia.com/XFree86/Linux-x86_64/375.20/NVIDIA-Linux-x86_64-375.20.run

Debería obtener una respuesta HTTP 200 OK.

b) Hacer que el archivo instalador de NVIDIA sea ejecutable ...

chmod + x NVIDIA-Linux-x86_64-375.20.run

c) Ejecute el instalador.

Se nota que está funcionando con el cargador ...

d) Acepte los términos del acuerdo de licencia de NVIDIA.

Después de la compilación de los módulos del núcleo ...

Simplemente presione enter para aceptar para pasar por las advertencias

Instalado.

e) Instalar el paquete común de controladores de Ubuntu.

Esto nos permite enumerar los dispositivos GPU que funcionan en nuestro servidor.

sudo apt install ubuntu-drivers-common

y elija y + enter para finalizar la instalación.

f) Instale automáticamente el último controlador NVIDIA.

sudo ubuntu-drivers autoinstall

Hecho con la configuración de NVIDIA. Luego, instale CUDA 8.

Paso siete: Instale CUDA 8.0

¿Qué es el CUDA? En pocas palabras, CUDA permite el procesamiento en paralelo en nuestra máquina y le da a nuestras GPU un aumento dramático del rendimiento.

a) Descargar CUDA 8.0 para Ubuntu 16.04

wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_8.0.44-1_amd64.deb

Debería recibir una respuesta HTTP 200 OK.

b) Desempaquete la descarga de CUDA 8.0.

c) Buscar actualizaciones.

sudo apt-get update

d) Instalar CUDA.

sudo apt-get install cuda

y escriba y e ingrese para completar.

¡CUDA 8.0 instalado!

Actualización: Alfonso, en la sección de comentarios, proporcionó amablemente los comandos para instalar CUDA 9.1. Para una versión más reciente de CUDA, use lo siguiente:

wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.1.85-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1604_9.1.85–1_amd64.deb
sudo apt-key adv - buscar claves
http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
 
sudo apt-get update
 
sudo apt-get install cuda

e) ¡Mira las GPU!

nvidia-smi

Droga.

Ahora, querrás reiniciar tu instancia.

Puedes hacer esto de dos maneras:

reinicio de sudo

o

Vuelva a su instancia en AWS, seleccione Acciones> Estado de instancia> Reiniciar.

Paso ocho: descargue BFGMiner

Nota: Trabajé con otros mineros que utilizaban el proxy de estrato, pero dichos repositorios aún usan el protocolo HTTP (en lugar de HTTPS). A partir de octubre de 2017, eso hace que el uso de un proxy de estrato sea mucho más difícil. El archivo setup.py utilizado para implementaciones listas para usar todavía realiza solicitudes HTTP y produce un error. No bueno

a) SSH nuevamente en su instancia.

Es posible que deba darle uno o dos minutos antes de poder conectarse nuevamente.

b) Cambie al usuario root.

sudo su

Ahora ya no necesitamos prefijar nuestros comandos con la palabra clave "sudo".

c) actualizar y actualizar todo.

apt-get update && time apt-get dist-upgrade

y escriba y e ingrese para terminar de actualizar los paquetes.

Es posible que se le solicite alguna configuración especial. Simplemente "Aceptar" las opciones predeterminadas.

d) instalar bfgminer para minar bitcoins.

apt-get install bfgminer

¡Y tenemos nuestra configuración!

Paso nueve: crea una billetera bitcoin

Ahora, para recibir cualquier tipo de recompensa o pago por nuestra minería, necesitaremos una dirección para enviar nuestras monedas.

Con mucho, Coinbase tiene la billetera / intercambio estadounidense más popular en este momento. Como entusiasta y desarrollador de Ethereum, estoy más familiarizado con Coinbase.

a) Registrarse en Coinbase.

Sin embargo, Coinbase no le permite minar directamente a las direcciones de sus billeteras (muy probablemente, porque de vez en cuando las direcciones cambian).

Todavía creo que es una buena idea mantener Coinbase como su billetera principal, pero el proceso de verificación puede ser un poco largo. Como todavía necesitaremos una dirección secundaria para vincular a nuestro minero, recomiendo usar JAXX. (¡Sin embargo, siéntase libre de usar la billetera que desee!)

b) Regístrese en JAXX.

Puede descargar la aplicación JAXX para cualquier dispositivo y crear una billetera en minutos. A partir de ahí, tendrás una dirección pública de bitcoin a la que puedes minar.

Paso diez: Únete a un grupo de minería

En las últimas semanas, me encontré con toneladas de grandes piscinas mineras: Dwarfpool y Minergate, por ejemplo. Sin embargo, creo que para la minería de GPU bitcoin, Slush Pool tiene una excelente interfaz, un gran servicio y un tablero útil para comprender lo que está sucediendo.

a) Únase a Slush Pool.

b) Navegar a mi cuenta.

c) Crear un nuevo trabajador.

Elija Trabajadores en la barra de navegación superior y nombre un nuevo trabajador como algo genial, utilizando los tipos de caracteres permitidos.

Haz clic en Crear.

Ahora navegue a Configuración y agregue la dirección de su billetera para los pagos.

Paso Once: ¡Comienza a minar!

a) Inicie bfgminer.

Ahora que tenemos un nombre de usuario de grupo y un trabajador, podemos iniciar el bfgminer.

Para ejecutar el minero, escriba:

bfgminer -o stratum.bitcoin.cz:3333 -O your_username.your_worker_name: x -S opencl: auto

Y ya va.

No importa el error que recibimos. ¡Después de unos minutos, notará que obtiene algunas acciones!

El Hashing Speed ​​no está fuera de este mundo, pero es mejor de lo que esperaba (honestamente).

¡Y agarré algunas acciones de bloque con dificultades bastante altas! Mayor dificultad compartida aceptada: 12.2k!

Después de darle un poco de tiempo de calentamiento, ¡mi piscina de granizados me registró a una velocidad máxima de aproximadamente 4.121 Gh / s!

¡No está mal! Minúsculo en comparación con un minero ASIC, pero en movimiento. Algunas horas de minería solo produjeron alrededor de .00000007 BTC. (No rentable)

Welp. Es posible que tenga que seguir con ethminer o minerd hasta que pueda obtener más GPU.

Algunos pensamientos finales ...

En mi tiempo de inactividad, voy a jugar con el algoritmo de hash para ver si no puedo obtener más velocidad. Me acabo de unir a una especialización de aprendizaje profundo en Coursera, así que esto me sirvió como una buena práctica. Los mantendré informados sobre cualquier progreso con la minería de GPU BTC.

Si apreciaste esta publicación, ¡no dudes en enviarme una propina en ether o bitcoin!

Dirección de bitcoin: 1ARn8yHJmeo8WvAebUJVuz2pfn7jfg6BLg

Dirección de eth: 0xcf8ee917fb71feddf9478d2c8a6ee22c51f8611d