miércoles, 13 de agosto de 2014

El protocolo de Bitcoin, mercado, minado y otras criptomonedas

El Bitcoin es una moneda virtual descentralizada y un protocolo basado en los principios de la criptografía asimétrica. Funciona en una red punto a punto que es mantenida por todos sus usuarios y su implementación está publicada bajo licencia de software libre con el código fuente disponible para todo el mundo.

Ejemplo de cifrado de mensaje con cifrado asimétrico. Fuente Wikipedia.


Desde la página oficial se puede obtener información para empezar a usar el Bitcoin y crear un monedero virtual con el que recibir y enviar dinero transacciones.

El proyecto comenzó en 2008 cuando un usuario bajo el pseudónimo de Satoshi Nakamoto publicó en una revista lista de correo de criptografía de metzdowd.com el paper como un sistema descentralizado P2P de dinero electrónico. El 11 de Febrero de 2009 publicaría la primera versión del cliente de Bitcoin en el foro de p2pfundation.

Actualización (15/08/2014): Desde metzdowd se puede acceder a la primera publicación en 2008 del paper y a la publicación de la primera versión del cliente de Bitcoin en 2009. Fuente: coindesk.com.

El cliente de Bitcoin o cartera se sincroniza con la red descargando todas las transacciones registradas. Es decir, que todos los pagos en Bitcoin son públicos. En sitios como blockchain.info se pueden consultar todas las transacciones que se están realizando en tiempo real.

Funcionamiento básico

Todas las transacción de bitcoins son públicas y se transmiten a través de una red descentralizada P2P donde los clientes actúan a la vez de servidores o nodos.

Cuando un cliente envía bitcoins a otro, la transacción se añade a un bloque que se propaga por la red. Toda transacción se confirma cuando es incluida en un bloque y a partir de ese bloque se sigue confirmando con los siguientes bloques. Cuantas más confirmaciones tenga una transacción se reduce la posibilidad de que ésta sea revertida. Por este motivo se suele solicitar al menos 3 confirmaciones o más para dar como válida una transacción.

En el White Paper oficial se explica el funcionamiento técnico con mayor detalle.

Generación de bloques

Un bloque se genera cada 10 minutos y tiene una estructura y una cabecera establecidas donde se indica:
  • Magic no: El valor de "número mágico" 0xD9B4BEF9, valor poco probable de que se produzca en la tabla ASCII en los datos normales con el siguiente bloque.
  • Blocksize: Tamaño de bloque.
  • Cabecera de bloque:
    • Version: versión del bloque
    • hashPrevBlock: El hash del bloque previo (SHA256)
    • hashMerkleRoot: El hash inicial raíz basado en todas las transacciones del bloque, cambia cuando se añade una nueva transacción.
    • Time: timestamp en 4 bytes.
    • Bits: indica la dificultad del bloque
    • Nonce: comienza en 0 y se incrementa en cada hash hasta que se desborda. Cuando lo hace, varía el valor de hash Merkle Root y asegura que sea casi imposible que dos personas generen el mismo valor de hash del bloque.
  • Contador de transacciones
  • Lista de las transacciones incluidas en el bloque.

Para generar un bloque se realiza una prueba de trabajo Proof of Work o PoW. Un sistema de prueba de trabajo PoW es una medida para disuadir ataques de denegación de servicio o correo no deseado en una red que requiere un trabajo del solicitante del servicio (normalmente tiempo de procesamiento con un ordenador).

Existen varios algoritmos de PoW. Bitcoin utiliza el algoritmo HashCash, creado por Adam Back en 1997.
 
Un Hashcash constituye un trabajo de prueba o PoW del que se tiene una cantidad parametrizable de trabajo para calcular y enviar. El receptor, o cualquiera ya que el trabajo enviado es público, pueden verificar el hashcash recibido de manera eficiente.


Este algoritmo está siendo utilizado por sistemas de seguridad como Spamassassin para evitar el envío de correo no deseado en agentes de correo electrónico o MTAs. 


En el White paper de hashcash se pueden leer con profundidad los detalles técnicos.

Minería

El cálculo de la cadena de bloques se llama minería. Un minero recibe una compensación en monedas cada vez que encuentra un bloque. Esta recompensa disminuye cada cierto número de bloques. Solo hay 21 millones de bitscoins, pero los bloques se siguen generando indefinidamente siempre que haya transacciones. Cada transacción emitida tiene un porcentaje muy pequeño de comisión que es repartido entre todos los mineros de la red.

Esquema protocolo de Bitcoin. Fuente
libro Mastering Bitcoin de Andreas M. Antonopoulos, editorial O'Reilly
Atlas.


En un principio se podía realizar minería con el monedero oficial en lo que se denomina Solo Mining. Pero cuantos más mineros haya y mayor su potencia de minado o hashrate, más aumenta la dificultad para que un minero encuentre un bloque válido. Esta dificultad se actualiza cada 2016 bloques (sobre dos semanas).

A día de hoy la única forma viable de minar bitcoins es en agrupación o Mining Pool y utilizando hardware ASIC.

Actualización (15/08/2014): En coindesk se puede leer con mejor detalle como se genera un bloque y como los mineros aseguran la confianza de la cadena de bloques.

Cartera

Para enviar y recibir bitcoins se utiliza una cartera electrónica de bitcoins. Una cartera tiene dos elementos principales:
  • Clave pública: La dirección del receptor cuyo emisor debe conocer para poder enviarle monedas.
  • Clave privada: Solo conocida por el dueño de la cartera para poder enviar sus monedas a otras direcciones. La clave privada se almacena en un fichero. Normalmente una aplicación cartera nos da la opción de cifrar el fichero que contiene la clave privada con una contraseña.
El código fuente de la cartera oficial está disponible en github. Desde la página oficial oficial se pueden descargar varias carteras no oficial, la versión core u oficial se instala en el equipo local y requiere la descarga sincronización de la cadena de bloques.

Hay otras carteras que no necesitan descargar toda la cadena de bloques e incluso hay carteras para dispositivos móviles como en Android.

Bitcoin Wallet para Android.

En Blockchain.info además de poder consultar en tiempo real todas las transacciones tiene disponible una cartera online que se puede crear con un simple registro. Hace unos meses publicaron una versión para Android.

Coinbase también ofrece un servicio de cartera online.

Se recomienda siempre cifrar el monedero (la clave privada contenida en un fichero de la cartera) con una contraseña.

Exchanges

La forma más fácil de adquirir bitcoins es comprarlos. Existen multitud de sitios web para el intercambio de bitcoins. En Europa están Bitstamp, en Rusia BTC-e, en China existen muchos sitios de intercabmio donde Okcoin tiene el mayor volumen de intercambio de bitcoins del mundo.

Principales Exchanges por volumen de bitcoins. Fuente The Story of Bitcoin.
Funcionan como un mercado de valores donde los usuarios realizan órdenes de compra y venta dando al Bitcoin un valor en función de la oferta y la demanda.

Estos sitios suelen ofrecen una API a través de un servicio web REST que automatizan los intercambios. En github tenéis disponible un script de ejemplo para realizar el intercambio de Bitcoin por otras monedas virtuales a través de 3 sitios web.

Otros sitios web como Localbitcoins permite realizar compras o ventas directas a través de intermediarios.

Cajeros automáticos

Una alternativa cada vez más presente son los cajeros automáticos de bitcoin. Hay varios modelos y se usan para facilitar los pagos con bitcoins en tiendas cercanas. Su uso es muy sencillo a través de códigos QR y dispositivos móviles.

Canadá es el país con más cajeros de Bitcoin en el mundo y en España ya hay varios cajeros instalados. En coindesk hay una sección para localizar cajeros y fabricantes de ATMs para Bitcoin en un mapa de Google Maps.

Mercado

El Bitcoin ofrece muchas posibilidades como forma de pago. Desde que la pizzería Papa Johns vendió la primera pizza en Bitcoins por 10 mil bitcoins, en el valor de 2010, actualmente multitud de comercios aceptan Bitcoin como medio de pago. La razón es la posibilidad de realizar transacciones, y microtransancciones, de forma directa e instantánea además de la baja comisión frente a otros sistemas de pago electrónicos como la tarjeta de crédito o Paypal.

Una solución ágil y simple para el comercio electrónico es Bitpay, conocido como el Paypal de Bitcoin. Permite aceptar el Bitcoin en tu comercio como medio de pago y recibir los ingresos en euros. Tal es el éxito de esta plataforma que ya está siendo utilizado en muchos sitios web y ha llegado a procesar un millón de dólares al día.

La plataforma de intercambio o exchange de bitcoins Coinbase ofrece una cartera de bitcoins online y un sistema de pago a través de su plataforma que puede ser incluida en cualquier comercio. Los packs de videojuegos de Humblebundle pueden ser adquiridos en bitcoins a través de esta plataforma y Overstock, una cadena de venta online de productos en stock de Estados Unidos, acepta Bitcoin como medio de pago aumentando consigo el número de ventas en más de un millón de dólares en dos meses.

Virgin también acepta el pago en esta criptomoneda para sus vuelos espaciales y Dell ya acepta bitcoins como forma de pago para la compra de sus productos hardware.

Los hermanos Winklevoss adquieren billetes de Virgin con Bitcoins. Fuente Coindesk.

Otras criptomonedas

Con el Bitcoin le siguen otros proyectos de monedas virtuales. Litecoin fue lanzada en 2011 por Charles Lee, ex-empleado de Google y actualmente trabajando en Coinbase. Dogecoin es una moneda basada en el meme de Doge que empezó a finales de 2013 parodiando al Bitcoin por el aumento de interés mediático tras romper la barrera de los 1,000$.

En menos de un mes Dogecoin superó en número de transacciones al Bitcoin. Obtuvo mucha fama en redes sociales como Reddit donde muchos usuarios empezaron a conocer el funcionamiento de las criptomonedas y a minar varias monedas al día con ordenadores sencillos (cuando la recompensa inicial era de 500 mil doges/bloque). A partir de aquí se financiaron varios proyectos solidarios como doge4water y doge4kids o eventos deportivos como la Nascar (piloto Josh Wise) o el equipo de bobsleigh Jamaicano.

Dogecoin ha financiado múltiples proyectos solidarios y eventos deportivos como la Nascar. Fuente Reddit.

Existen infinidad de monedas virtuales y cada día surgen nuevas altcoins, cada una con implementaciones diferentes y nuevas ideas como SpainCoin con el 50% preminado para repartir entre los ciudadanos españoles que lo soliciten. Otras implementaciones incluyen nuevos algoritmos de cálculo de bloque como Scrtypt-N de Vertcoin (y con posibilidad de envío anónimo) o X11 de Darkcoin (completamente anónimo), implementaciones AuxPoW para compartir el hashrate con otras monedas, cálculos de dificultad variables, transacciones anónimas o stealth address e incluso chats descentralizados como en Talkcoin.

En el foro de bitcointalk se publican cada día nuevas altcoins y en coindesk se puede leer un artículo interesante comparando las altcoins con los inicios de los ordenadores para casa y los microcomputadores.

Mientras Dogecoin acaba de anunciar su fork a AuxPoW para poder minar junto con Litecoin, cada vez hay más desarrollo e innovación entre algunas de las criptomonedas. Aunque esto no signifique una alta demanda actual de monedas (con aumento de su valor) podría significar una buena inversión de cara al futuro.

Minar Bitcoin o monedas Scrypt

Para minar Bitcoin es necesario utilizar el hardware ASIC más potente, donde cada día hay más competencia y el hardware queda rápidamente obsoleto e inútil. Teniendo en cuenta la estimación de subida de dificultad para Septiembre, esto implica importantes inversiones. Cuidado con el dudoso ROI de los servicios CloudMining y los retrasos de entregas de hardware, aduanas, instalación, etc. Podría decirse que el principal beneficiario en la minería de bitcoins hoy en día son los fabricantes de ASICs.

Hace poco se publicó en el blog the Thecoinsman la curiosa visita a un centro de minado de Bitcoins en China con más de 500 TH/s, unos 14 BTC/día con la dificultad actual. Mientras, en Europa el fabricantes sueco de ASICs KnCMiner tiene su propio centro de datos profesional.

Centro de datos de minado de KnCMiner. Fuente foro bitcointalk.

También sale rentable minar otras monedas con algoritmos diferentes. Hasta el primer cuarto de 2014 era posible minar con tarjetas gráficas monedas con el algoritmo Scrypt como Litecoin o Dogecoin (que superó los 200 satoshis en Enero). Pero con la llegada de ASICs para Scrypt es necesario plantearse la opción de adquirir un minero ASIC Scrypt si queremos minarlas y obtener beneficios.

En rigwarz hay una lista de mineros y sus fabricantes tanto para SHA-256 (bitcoin) como Scrypt.

En BitcoinWisdom se puede calcular el retorno de inversión indicando el precio del hardware, consumo eléctrico y previsión del aumento de dificultad. En muchos casos resulta más económico comprar monedas directamente antes que minar.

Minar monedas alternativas

Aún es rentable minar usando tarjetas gráficas monedas con algoritmos por ahora resistentes a hardware ASIC como Scrypt-N, Quark, X11, Keccak, NIST5, o X13.

Si eres algo mañoso puedes montarte tu propio rig con varias gráficas para minar altcoins. Aunque la entrada es algo antigua, en CryptoBadger hay un buen tutorial de como montar y configurar un rig minero.

Algo no muy complicado y muy recomendable es hacer undervolt en las tarjetas gráficas para reducir el consumo eléctrico (en Windows se puede hacer con los drivers).

Rig con 3 gráficas ATI 7950 y fuente de 850w.
También se aconseja separar las gráficas del resto de circuitos utilizando extensores de PCIe, utilizar fuentes eficientes con certificados 80plus y montarlo en estructuras abiertas y aisladas para una buena la ventilación. En tiendas como pcgal se pueden adquirir extensores PCIe y otros materiales de minería desde España y sin tener que esperar semanas a que lleguen desde China o Hong Kong.

Los algoritmos como el X11, X13 o NIST5 tienen la ventaja de que las gráficas consumen bastante menos, entorno a un 40% menos frente a Scrypt y Scrypt-N, generando menos calor.

Software minero

Para minar una criptomoneda es necesario utilizar el software que calcule los posibles bloques en el algoritmo específico de la moneda. Además, el software debe estar adaptado al hardware que se va a utilizar.

Para las tarjetas gráficas ATI están todas las versiones basadas en el Cgminer de Con Kolivas como Sgminer (Scrypt), Vertminer (Scrypt-N), Sph-sgminer y todas las mejoras de optimización para diferentes algoritmos como el Sph-Sgminer_x11mod (X11, X13, Nist5 entre otros).

Para tarjetas gráficas Nvidia están disponibles CudaMiner y ccMiner.

Aunque Nvidia obtiene un rendimiento menor en los algoritmos Scrypt y Scrypt-N, las versiones de múltiples algoritmos como X11 o X13 tienen un rendimiento similar al obtenido con gráficas ATI.

La forma más sencilla para la instalación del software minero es recurrir a  distribuciones de GNU/Linux, autoarrancables desde USB y con todo lo necesario para minar.

El usuario Bee adaptó el original BAMT (versión basada en Debian x86) creando Litecoin BAMT. Incluye los últimos drivers de ATI, Sgminer y diferentes versiones para varios algoritmos, acceso de escritorio remoto y un sistema de monitorización a través de un panel web.

Panel de monitorización de Bamt 1.6, minando x11 con 3 gráficas.

Otra distribución que incluye soporte para 64 bits con versiones para ATI, Nvidia e incluso RaspberryPi (para utilizar con hardware ASIC a través de USB) es PiMP.

4 comentarios:

  1. y como te hago referencia en mi tesis

    ResponderEliminar
  2. Hola Jose, ¿como se titula su tesis?

    Puedes citar el mismo artículo en https://arxiv.org/submit/1871695/view

    Muchas gracias.

    PD: Recuerda que es del 2014

    ResponderEliminar
  3. Bueno, en la lista te falto Monero que también esta creciendo como criptomoneda, la verdad es que yo mino para Monero en la pool de https://www.coinimp.com/ me parece una excelente opción para los que quieremos iniciar en esto pero tenemos computadoras comunes, esa pagina no te cobra comisión y el pago mínimo bajo es de 0.2XMR

    ResponderEliminar
    Respuestas
    1. Gracias Vanilla, también sigo Monero desde casi sus inicios pero cuando escribí el artículo todavía no estaba muy puesto en las criptomonedas basadas en el protocolo Cryptonote. De hecho la tecnología de Ring Signatures con el uso de RingCT para ocultar los balances es con diferencia mucho mejor que la ofuscación implementada en Dash (Darkcoin cuando escribí este artículo).

      Hablar de pools de minería es darle publicidad a ellas, agradecería que no se mencionasen aquí.

      Eliminar

Nota: solo los miembros de este blog pueden publicar comentarios.