Minado de Ether: ¿Qué es? ¿Cómo se hace? ¿Es rentable?

Estamos viviendo un boom (o burbuja) de las cryptomonedas comparable a la de la fiebre del oro. Tiene algunas similitudes, ya que cualquiera se puede poner a minar y conseguir cryptomonedas «gratis». Veremos todos los detalles de esta práctica centrándonos en conseguir Ether, la cryptomoneda de Ethereum.

Ethereum es una plataforma que utiliza una arquitectura blockchain. En estas, como ya explicamos cuando hablamos de cryptojacking y de las diferencias entre Prueba de trabajo y Prueba de confianza (o interés), cada bloque guarda el hash del anterior como identificador único, y que al estar encadenados todos los bloques sea, en la práctica, imposible alterar los datos pasados. Para obtener ese hash hay que realizar muchos cálculos, por eso al propietario de la máquina que consigue obtenerlo en primer lugar, la plataforma le da una recompensa (actualmente 5 ETH).

Por tanto, es fácil, si tu quieres obtener Ether sin aflojar la cartera, tan sólo tienes que convertirte en minero poniendo tu ordenador a trabajar por ti. ¡Fa-ci-lí-si-mo!

Veamos, ¿cómo podemos poner a nuestro equipo a trabajar en ello?

Lo primero es obtener geth (Go Ethereum). Es la consola/aplicación de consola oficial. Si tienes instalado el Wallet de Ethereum o Mist, ya la tendrás instalada y configurada, ya que es por ejemplo la encargada de sincronizar tu sistema con toda la red de Ethereum para que tengas los mismos bloques que el resto.

Una vez montado sólo tienes que ejecutar el siguiente comando:


geth --etherbase '0xHashDeTuWallet' --mine

Ten en cuenta que si ya tenías geth configurado por tener el Wallet, te bastará solo con usar el argumento «–mine» porque ya tendrás establecido tu coinbase.

Otra opción que tienes es iniciarlo en modo consola y luego arrancar el miner:


geth console
...
>miner.start()

Yo prefiero esta modalidad ya que nos permite consultar nuestro hashrate y la dificultad de lo que ha costado conseguir el último bloque, con lo que podremos echar una estimación de cuanto tiempo tardaremos (estadísticamente) en conseguir cerrar uno de los bloques y llevarnos nosotros la recompensa:

Comprobación de tiempo para obtener un hash
Comprobación de tiempo para obtener un hash

Como se puede comprobar en la imagen, en mi máquina se tardarían más de 87.000 días en obtener un hash.

¿Está eso bien? ¿Qué ocurre aquí?

El comando geth no está preparado para usar GPUs, por lo que usa la CPU y por mucho que mi máquina sea un maquinón, mis 8 cores no están a la altura de ninguna GPU.

Para solucionarlo hay dos opciones sencillas: una es usar una implementación en C++ de la definición de Ethereum, la cual sí está preparada para usar GPUs pero que oficialmente no ha sido lanzada; la otra opción (y mi preferida por seguir usando el software verificado) es usar otra aplicación para las operaciones que se conecte a geth para que se encargue del resto.

Para esta última opción hay que poner a geth a escuchar:

geth --rpc --rpccorsdomain localhost

Y luego arrancar ethminer con la opción que queramos:

  • G usa las tarjetas que estén habilitadas para funcionar con OpenCL.

  • U usa las tarjetas que estén habilitadas para funcionar con CUDA.

  • X usa todas las tarjetas.

No vamos a entrar en grandes detalles, pero os contaré que en mi caso tengo dos tarjetas. La NVIDIA dedicada es CUDA y la Intel que usa memoria compartida es OpenCL. Podría parecer que lo mejor es usar la opción «-X» y poner todas a funcionar, pero es un error ya que los recursos del sistema son limitados y entonces se pelearán por ellos… este es un caso de en los que menos es más.

En mi equipo usando una tarjeta dedicada con 4GB se obtiene que estadísticamente tardaría aproximádamente 1500 días en obtener esos 5ETH. Seguro que algún ludópata ya está echando las cuentas, pero la verdad es que con el cambio de 626€ actual, esto supone que se estarían ganando unos 2€ al día. No está mal sin hacer nada ¿verdad? Pero hay que contar que el consumo eléctrico de la máquina (en mi caso) se duplica, que probablemente dentro de 1500 días no se pueda minar con la máquina que estés minando hoy, o que puede que 1ETH dentro de 4 años valga mucho más o mucho menos… Echad vuestras propias cuentas y decidid si vais a jugar o no, porque esto es una lotería y aunque puede que tengáis suerte, las probabilidades están en vuestra contra.

¿No hay ninguna opción de empezar a ganar dinero desde ya?

Sí, claro que la hay. Te puedes unir a un pool que en cierto modo te paga por cada hash prometedor que le mandas independientemente de que sea exitoso o no. Es como si repartiese las ganancias que se generan entre todos los que están trabajando con él.

Podéis estudiar que pool os da más. Yo usé ethermine.org y ponerlo en marcha es muy sencillo. Sólo tenéis que bajaros un programa, modificar el start.bat para establecer el servidor que os quede más cerca y vuestra cartera y echarlo a andar:

setx GPU_FORCE_64BIT_PTR 0
setx GPU_MAX_HEAP_SIZE 100
setx GPU_USE_SYNC_OBJECTS 1
setx GPU_MAX_ALLOC_PERCENT 100
setx GPU_SINGLE_ALLOC_PERCENT 100
EthDcrMiner64.exe -epool eu1.ethermine.org:4444 -ewal 0x4bf644b03a83a4e3f5534f81a3dd1e8b28b32076.Rig001 -epsw x

Mi primera experiencia con esto fue que tras tres horas había conseguido ganar 0.00026ETH que al cambio del momento eran unos 0.10€. Habrá quien diga que el valor en euros no vale, ya que mientras escribo estas líneas esa misma cantidad de Ether vale aproximadamente 0.16€, pero podemos verlo de otro modo: cuando pasé Ether que había comprado en Coinbase a mi cartera, el fee de la transacción fue de casi el doble de lo que saqué minando durante 3 horas.

Esto es lo que pasa con el Ether, pero con Bitcoin y otras cryptomonedas populares pasa más de lo mismo. Cada uno puede sacar sus propias conclusiones y sus propias cuentas, pero creo que a día de hoy, por mucha burbuja que haya, no vale la pena ponerse a minar cryptomoneda, a no ser que salga una nueva y os aventuréis a ser uno de los primeros mineros igual que aquellos que corrían de un lado a otro de California buscando la próxima veta.

Cryptojacking: la minería de cryptomonedas como modelo de negocio

Estoy seguro de que muchos habéis pensado en usar el cryptojacking como modelo de negocio –las ideas suelen surgir simultáneamente en muchas cabezas a la vez- cuando hayáis visto noticias sobre cryptojacking, como el sonado caso de la CBS que durante un fin de semana tuvo incluido en su reproductor un script para minar cryptomonedas. ¿Pero es realmente factible? Entendámoslo y observemos sus implicaciones.

web coin photo
Photo by SMU Central University Libraries

El cryptojacking es un concepto más o menos novedoso, que se refiere a realizar minería de cryptomonedas usando para el computo los navegadores de visitantes a una web. Normalmente se supone poco ético, pero vayamos por partes que hay muchos conceptos:

  • Recordaréis cuando hablamos de blockchain, a las personas que se dedican a calcular los hash de los bloques se les llama mineros, porque el algoritmo les otorga una pequeña cantidad de cryptomoneda a quienes encuentran cada hash.
  • Para realizar esa minería, para buscar esos hash hay que realizar muchos cálculos invirtiendo en tiempo de procesador. Hay empresas que se dedican a la minería y que tienen montones de ordenadores (granjas) dedicados a realizar estos cálculos.
  • Una web, es una aplicación distribuida en la que parte del programa se ejecuta en el servidor, y otra parte se ejecuta en el navegador de los usuarios.
  • Cuando se usa la capacidad de computación de los visitantes a una web, para realizar minería, es cuando estamos hablando de cryptojacking.

En casi todos los casos en los que se habla de cryptojacking se trata (o al menos se supone) de webs que han sido crackeadas, en las que se ha incluido el código necesario para realizar la minería, pero ¿y si no siempre fuese así? ¿Y si una web de manera legítima implementara este sistema de minería para financiarse? ¿Qué podría pasar?

Esta técnica hace que se consuman recursos de los equipos de los visitantes, pero por norma general, la mayoría de los visitantes tienen recursos más que sobrados en sus sistemas que están muy infrautilizados. Al final es como los sistemas para compartir potencia para cálculos distribuidos, ya sea para encontrar una cura para el cancer o buscar vida fuera de nuestro planeta. Los usuarios le estarían cediendo sus recursos a una web durante el tiempo que se pasen consumiendo sus contenidos.

Si esto se usase como sustitutivo de los anuncios (que cada vez funcionan menos y peor en la web actual), no les supondría una gran carga adicional a los usuarios, puesto que los anuncios por si mismos ya están consumiendo recursos de sus máquinas. Además dejarían de estorbar visualmente.

También, se implementarían las webs para que tuviesen la menor cantidad de recargas, y para que se pase el mayor tiempo posible con ella abierta. Por ejemplo, en una web de noticias, esto es posible que provocase que se empezaría a dejar de lado el clickbait y empezar a crear contenidos realmente relevantes e interesantes.

Para saber si es algo rentable, tendríamos que tener en cuenta muchos factores, principalmente el valor puntual de la cryptomoneda que se esté empleando. También de cuanta cantidad de cryptomoneda se  lleva el minero que tenga éxito en encontrar el hash de un bloque. Por último, cuanto tiempo medio de visitante en la página se necesita para encontrar un hash. Podríamos meter más variables como el coste de adquisición de un usuario, lo que se deje de ingresar por publicidad o muchas otras cosas, pero sólo con estas tres variables ya se ve que hay que centrarse en un caso particular para determinar si es rentable o no.

Por ejemplo, cada vez que se encuentra un hash de un bloque de Bitcoin, el minero se lleva 12.5 Bitcoins (aunque se dividirá por dos en el futuro). El precio de los Bitcoin es muy variable, pero hace ya días que está por encima de los $5,500. Por tanto, estamos hablando de más de $70,000. Por ejemplo, atendiendo a las cuentas públicas de un medio que conozco bien, les bastaría con conseguir minar un hash a la semana para ser rentables y olvidarse de la guerra de la publicidad.

Lo difícil es saber como de factible es que un sistema distribuido como este consiga minar uno de estos hash, pero desgraciadamente de eso no hay muchos datos y tendremos que esperar a que algún medio con suficiente calado se anime a hacer pruebas legítimas y en condiciones, y que posteriormente se animen a compartir esa información.

¿Cómo lo veis como usuarios? ¿Os preocuparía que se usase vuestro equipo para esto si a cambio os libraseis de la fastidiosa publicidad?

Blockchain fácil fácil

Ya son varias las personas de distinto ámbito que me han pedido una explicación sencilla de lo que es Blockchain, así que supongo que es un tema que debo plasmar aquí, y dejar de contarlo entre cervezas. Voy a intentar que cualquier persona con una base técnica mínima pueda entenderlo, pero ante las dudas preguntad en los comentarios 😉

blockchain photo
Photo by btckeychain ©

Blockchain, como su propio nombre indica, es una cadena de bloques. En cada bloque se almacena una información y el hash del bloque anterior (¿os acordáis de la explicación sobre lo que es un hash de la semana pasada?).

De este modo, al almacenar cada bloque la «firma» del anterior, si se cambiase el contenido de un bloque se alteraría esa firma, con lo que habría que cambiar el contenido del siguiente bloque, y así sucesivamente hasta llegar al bloque más actual.

Eso, así de simple es un blockchain.

Ahora bien, seguro que habéis oído que este sistema se está usando en criptomonedas y en otras soluciones porque se supone que no se puede alterar los bloques ¿no?

En un blockchain que se almacenase en un solo lugar sería «trivial» alterar el contenido de un bloque random. Sin embargo, todos los sistemas que se están basando en esto son sistemas distribuidos, en los que hay muchos participantes que mantienen una copia de toda la cadena de bloques, por lo que para poder alterarla sin que todo el mundo se de cuenta, no sólo habría que modificar todos los bloques que maneje una máquina, si no que habría que hacerlo en todas las máquinas que almacenan una copia.

Vamos a poner un ejemplo práctico aplicado a algo que muchos habréis sufrido:

  • Imaginemos que tenemos un cuaderno en el que vamos a apuntar el acta de las reuniones de una comunidad de vecinos.
  • Para que no haya alteraciones, decidiremos que cada página tiene que empezar siempre con el «hash» de la página anterior.
  • El hash en este caso (para que sea fácil de calcular a mano), estará formado por la primera y última letra de cada fila y entre ambas el número de caracteres.
  • De este modo, si cambiásemos una página cambiaríamos su hash, que al ser la primera línea de la página siguiente, nos provocaría también cambiar su hash, etc. etc.
  • Un presidente maquiavélico podría comprarse un nuevo cuaderno para cambiar todas las actas y plasmar que a él se le eligió de por vida. Pero, si todos los propietarios tuviesen una copia del cuaderno, el presidente no podría hacerlo a no ser que pudiese entrar en todas las casas de todos los vecinos a pegar el cambiazo por un cuaderno modificado.

¿Queda claro?

Las aplicaciones de esto pueden ser muchas, aunque generalmente se usa para crear soluciones que eliminen intermediarios.

Por ejemplo, es la base de Bitcoin, la primera criptomoneda que se creo para poder hacer micropagos. El problema de los micropagos, era que al tener a los bancos como entidades intermediarias, las comisiones hacían imposible realizar estos micropagos. Al eliminar los intermediarios, los pagos pueden ser gratuitos, y hacerlos tan pequeños como se quiera.

Esa es la teoría, porque Bitcoin se ha expandido mucho por otros motivos derivados de la eliminación de intermediarios (anonimato, capacidad de especulación desmesurada, acceso universal, …), pero eso ya es otra historia que tendrá que ser contada en otro momento.