Blockchain

Blockchain


Blockchain » Capítulo 2. Desde la criptomoneda a la blockchain: introducción de la tecnología Bitcoin » Limitaciones de Bitcoin: problemas de seguridad, de escalabilidad y de gobernanza

Página 6 de 13

Capítulo 2

Desde la criptomoneda a la blockchain: introducción de la tecnología Bitcoin

Una vez se ha introducido la base criptográfica de blockchain, y tras una contextualización histórica, en este capítulo nos centraremos en la primera propuesta de blockchain: la blockchain de Bitcoin. A lo largo del capítulo subrayaremos los principales elementos criptográficos que permiten emular el comportamiento de la moneda física mediante tecnología digital. En concreto, explicaremos los principios criptográficos, los protocolos de red y el modelo de colaboración que hacen posible que una criptomoneda como bitcoin haga viable el intercambio de valor financiero con los mismos criterios con los que operamos al usar el dinero en metálico, esto es, los billetes y monedas de curso legal. Así, haremos hincapié en que el éxito de Bitcoin no se explica solo con su base criptográfica, sino que es necesario que en la red Bitcoin exista todo un conjunto de usuarios que pongan sus ordenadores y dispositivos de cómputo al servicio del ecosistema, actuando como nodos activos en la generación de criptomonedas. Por último, la sostenibilidad del sistema también precisa de la presencia de usuarios finales que instalen el software cliente de Bitcoin y realicen transacciones mediante la criptomoneda de la plataforma, esto es, el bitcoin, cuyo símbolo, por analogía con otras monedas es ñ o E.

Orígenes de Bitcoin

El surgimiento de una tecnología rara vez corresponde a un único motivo o a una sola causa. La relación existente entre los intereses puramente técnicos y los objetivos económicos, sociales y políticos es algo que hemos venido experimentando a partir de la Segunda Guerra Mundial. Como señaló en su momento Bertrand Russell, y como recuerda Phillip Rogaway (Rogaway, 2015), el hecho científico está siempre anclado en un momento histórico. Cada contexto socio-político responde a una urdimbre económica, a un modelo que determina todo tipo de preferencias y de opciones, también las de proyectos científicos y técnicos. Aunque tendemos a pensar que las denominadas ciencias puras están exentas de toda intervención y determinación proveniente desde fuera de su dominio específico, lo cierto es que tanto las matemáticas como la física también están subordinadas a las líneas generales de la política científica de un país.

No obstante, el colectivo científico no es monolítico y, de hecho, el carácter indagador y hasta escéptico (en el sentido clásico de skeptikós, o ‘el que examina’) de la labor científica inevitablemente lleva a la disensión y al cuestionamiento. No es difícil encontrar ejemplos de “disidentes” en las diversas disciplinas de la tecnociencia, sin que ello tenga que comportar una necesaria adscripción o intención política.

En el caso de la comunidad criptográfica, esta dinámica se ha hecho presente a través de diversos movimientos y organizaciones como los cypherpunk (Rogaway, 2015). Este colectivo surgió a finales de 1980 con el fin de aplicar los principios de la criptografía al ámbito político. Herramientas como el gestor de cifrado PGP (Pretty Good Privacy), la red Tor (The onion router), la información de Wikileaks o la criptomoneda bitcoin son consecuencia de la acción política de este grupo de tecnólogos que extienden las contribuciones académicas en criptografía de modo que proporcionan implementaciones prácticas y casos de éxito reales. Son muchas las críticas que han recibido por parte del mundo académico las diversas iniciativas de este colectivo y casi todas ellas subrayan la falta de precisión y de formalismo de muchas de sus propuestas. Sin negar que en muchos casos sería necesario un mayor desarrollo teórico, es de destacar la capacidad de los cypherpunk a la hora de proponer soluciones de fácil uso para cifrar información, para navegar por Internet protegiendo la identidad del usuario en la red, para acceder a información de interés público que no es públicamente accesible o para contar con sistemas de intercambio financiero prescindiendo de intermediarios.

De hecho, los cypherpunks son muy responsables de que en estos momentos la criptografía sea una de las grandes protagonistas de la actualidad tecnológica (siempre lo ha sido aunque no hayamos sido conscientes). Y lo es fundamentalmente como resultado de toda la actividad e interés que ha despertado el fenómeno Bitcoin y el mundo de la criptoeconomía. Tal y como se explicó en la introducción, la criptomoneda bitcoin fue creada de forma anónima por una o varias personas bajo el seudónimo de Satoshi Nakamoto. Bitcoin es mucho más que un mecanismo de intercambio de valor financiero, ya que genera todo un ecosistema de actividad económica que se conoce bajo el nombre de criptoeconomía.

Desde la aparición del artículo de Satoshi Nakamoto (2008), el número de noticias sobre Bitcoin y la criptoeconomía ha ido creciendo. Este concepto de nuevo cuño, la criptoeconomía, se emplea para mencionar no solo la actividad financiera basada en criptomonedas, sino también para aludir a toda nueva propuesta que haga uso de la blockchain de alguna criptomoneda. Es más, en los foros de discusión sobre criptoeconomía se habla del mundo cripto o de expertos cripto para referir a toda la actividad adscrita a la criptoeconomía y a los expertos en esta nueva forma de economía digital. Con la criptoeconomía ocurre algo parecido a lo que tuvo lugar en el caso de los cypherpunks. En ambos casos, y al menos desde la perspectiva del gran público, la esfera académica pierde protagonismo. Dicho de otra forma (y en la línea de lo que subraya Phillip Rogaway), el ciudadano medio percibe que los cypherpunks y la criptoeconomía han alcanzado grandes resultados al emplear la criptografía como elemento transformador de las relaciones de poder. Ese éxito ha eclipsado el hecho de que los fundamentos teóricos de aquellos logros vienen del ámbito académico (Narayanan y Clark, 2017), de forma que existe una tendencia a identificar la criptografía con sus aplicaciones.

Al margen de la cuestión de la autoría y de la más o menos fortuna de la sinécdoque, hay que admitir que la criptoeconomía ha venido a configurar la agenda de la investigación y desarrollo de los sistemas de información y de comunicación. Así, desde la publicación del artículo seminal de Nakamoto (2008), las reacciones al fenómeno Bitcoin han sido muy variadas (figura 3). Sobre todo, es significativo cómo ha ido variando la percepción de la tecnología por parte de los organismos e instituciones reguladoras de los distintos países.

Figura 3

Evolución temporal de Bitcoin.

En concreto se pueden diferenciar tres etapas en la línea temporal de la figura 3. Desde 2007 hasta mediados de 2011 se puede considerar que Bitcoin formaba parte de un grupo muy reducido de usuarios, de forma que los Estados y organizaciones no mostraban ni curiosidad ni recelo sobre la actividad que este grupo de programadores y usuarios avanzados de la tecnología llevaba a cabo con Bitcoin. A partir de finales de 2011 se empezaron a registrar evidencias de que Bitcoin no solo era cosa de friquis. En efecto, el anonimato que proporciona Bitcoin a la hora de realizar transferencias era visto por terroristas y otros delincuentes como una gran oportunidad para eludir las medidas de control de los países y de sus fuerzas de seguridad. Además, los diversos bancos centrales de los distintos países advierten de la dificultad para imponer las medidas de lucha contra el blanqueo de dinero en el ecosistema Bitcoin. Este rechazo institucional y la mala fama de Bitcoin se extienden hasta 2015. En esa fecha, representantes de alto rango del mundo financiero ven que la tecnología base de Bitcoin —blockchain— tiene un gran potencial como vehículo de nuevos modelos de negocio y de actividad financiera. A partir de este momento se dispara el entusiasmo con blockchain y con la denominada criptoeconomía, entusiasmo que se inicia en Estados Unidos pero que recientemente también ha acabado contagiando al continente europeo.

Si en su inicio Bitcoin tuvo éxito, fundamentalmente como consecuencia de la quiebra de la confianza en los bancos tradicionales a comienzos de la crisis económica del 2008, posteriormente el crecimiento del número de usuarios dio lugar a un conjunto de iniciativas empresariales que empezaron a utilizar Bitcoin como soporte de su modelo negocio. En este estadio es especialmente relevante el caso de BitPesa en Kenia.

BitPesa es una empresa fundada en 2013 que trata de extender el éxito de la plataforma M-Pesa (acrónimo de móvil en inglés —Mobile— y dinero en swahili —Pesa—) como vehículo de inclusión financiera en países con una alta tasa de población sin posibilidad de tener acceso a una cuenta bancaria (Campbell-Verduyn, 2017). En el caso de M-Pesa, la innovación vino determinada por el uso de los dispositivos móviles como herramienta para realizar transacciones de pequeñas cantidades de dinero. Aunque M-Pesa es una plataforma creada por Vodafone para Safaricom (el principal proveedor de servicios de telecomunicaciones de Kenia), su éxito, desde su aparición en 2007, se basó en que todos los intercambios de remesas se realizaban de modo local. Así, todos los usuarios de M-Pesa utilizaban su móvil para enviar pequeñas cantidades de dinero a su círculo de confianza. Dicho de otro modo, la plataforma móvil de Safaricom hizo posible trasladar al dominio digital el modelo de reciprocidad sobre el que descansaba la sociedad keniata. El alto grado de aceptabilidad de M-Pesa estuvo en gran medida deparado por la popularización de la telefonía móvil, específicamente de dispositivos móviles de bajo coste. Sin necesidad de contar con una red costosa de oficinas bancarias, la propuesta de Vodafone hizo viable un modelo de inclusión financiera que tampoco precisaba el uso de dispositivos móviles inteligentes. El envío de SMS (short message service) se convirtió en el canal financiero para transferir dinero a través de los operadores de telefonía. Es más, la recarga de tarjetas de prepago extendió el modelo original potenciando aún más, si cabe, el tráfico de micropagos a través de la telefonía móvil.

El carácter ubicuo del pago electrónico mediante móviles en M-Pesa estaba acotado geográficamente, ya que las características del modelo social sobre el que operaba estaban restringidas al ámbito de las redes de contactos familiares y de amistad. Consciente de las virtudes de M-Pesa y del alto coste del envío de remesas transnacionales, Elizabeth Rossiello, en 2013, fundó BitPesa con objeto de llevar el modelo M-Pesa más allá del ámbito nacional, haciendo para ello uso de Bitcoin. La propuesta fue bien recibida por la comunidad y rápidamente alcanzó un volumen significativo del total de transferencias transnacionales de África. Ahora bien, en 2015 el Banco Central de Kenia (CBK) declaró que la actividad de negocio de BitPesa no se amoldaba a las características establecidas por la legislación del sector de las transferencias y del envío de remesas. La consecuencia directa de esta declaración fue la interrupción por parte de Safaricom de cualquier colaboración entre M-Pesa y organizaciones basadas en tecnología Bitcoin12.

Registro de transacciones en Bitcoin: ventajas e inconvenientes del seudoanonimato en el ámbito financiero

La consideración de Bitcoin como un ecosistema de riesgo no es exclusiva de Kenia. En términos generales, existe un recelo respecto a la forma en la que Bitcoin registra la cesión de capital (esto es, unidades de la criptomoneda bitcoin) desde un emisor a un cierto receptor. Tal apunte no se ajusta al paradigma clásico, en la medida que los usuarios involucrados (emisor y receptor) son designados a través de un seudónimo.

Tal y como referíamos en el capítulo 1, la firma digital es la primitiva criptográfica con la cual se gestiona la autoría de cualquier información. En el contexto de Bitcoin esta información viene dada por una transacción desde un emisor hacia un destinatario. La firma digital permitirá probar que el emisor es el propietario de una cierta cantidad de dinero que es transferida a un destinatario. De forma más precisa, este destinatario viene dado por una clave pública a la cual estará asociada la cantidad de dinero consignada en la transacción. Una vez completada la transacción, el destinatario podrá reutilizar el dinero recibido en una nueva transacción, para lo cual simplemente tendrá que probar que es el propietario haciendo uso de su clave privada.

En la figura 4 aparecen dos usuarios de Bitcoin, Alicia y Benito, cada uno de los cuales posee un monedero Bitcoin que incluye varios pares de claves públicas (representadas mediante un candado) y privadas (identificadas a través de una llave). Si Alicia desea enviar dinero a Benito mediante Bitcoin, solo necesita conocer una clave pública de Benito y hacer uso de una de sus claves privadas. De modo más detallado, en la figura 4 aparecen representados los monederos de Alicia y de Benito. Alicia tiene en su monedero cuatro pares Ai de claves, 1 ≤ i ≤ 4, cada una de ellas asociada a una cantidad concreta de bitcoins. A la hora de realizar una transacción (denotada por trx) Alicia empleará los bitcoins asociados a uno o varios de los pares Ai. En el ejemplo de la figura 4 Alicia solo emplea un par de claves y, en concreto, hace uso de la clave privada incluida en Ai para probar que es la propietaria de los bitcoins correspondientes. Una vez que Alicia ha probado que es la dueña de los bitcoins a utilizar en trx, podrá enviar dinero a Benito. Para ello establece como destino de trx una dirección asociada a Benito, esto es, una clave pública incluida en uno de los pares Bj que están dentro del monedero de Benito.

Figura 4

Transacción entre dos usuarios de Bitcoin. Los monederos de Alicia y Benito contienen pares de claves, y cada uno de estos pares tiene asociada una cantidad de bitcoins.

La trazabilidad de cada uno de los usuarios de la red Bitcoin, por tanto, vendrá dada como la capacidad de establecer las operaciones realizadas por una clave pública y de vincular esta clave con una identidad física. Ahora bien, cada usuario de la red Bitcoin puede generar tantas claves públicas (con sus correspondientes claves privadas) como desee. Todas y cada una de esas claves están almacenadas en el monedero electrónico de un usuario, y no hay forma de saber qué usuario está detrás de una clave pública, a menos que ese usuario informe al respecto de su identidad.

En Bitcoin, por tanto, las direcciones desde la que se recibe dinero serán las claves públicas de los distintos usuarios. Cada una de esas claves públicas tiene asociada su correspondiente clave privada, de forma que aunque se conozca la clave pública no será posible determinar la clave privada asociada (la relación existente entre ambos tipos de claves está protegida por la imposibilidad computacional de resolver un problema matemático considerado muy difícil). Así, solo el poseedor de dicha clave privada podrá utilizarla para firmar información, la cual se constituye en prueba de autoría o de propiedad (capítulo 1). En el caso concreto de Bitcoin, esta propiedad determina el origen y destino de las transacciones, con lo que el dinero vinculado a una dirección se calculará como el balance contable entre las transacciones que tienen por origen o destino dicha dirección. El dinero total que posee un usuario se calculará, pues, como la suma de todos los balances contables de las claves públicas que posee dicho usuario.

Como hemos venido remarcando, las credenciales de usuario (su clave pública y privada) en Bitcoin tienen por principal cometido la atribución de transacciones de modo que la identidad de los intervinientes en las mismas quede salvaguardada, a la vez que se garantiza la corrección y validez en el intercambio de valores entre las partes. En Bitcoin existen tres tipos de transacciones:

P2PKH (Pay-to-Public-Key-Hash). Es el tipo estándar de transacción en Bitcoin y define la cesión de valores de criptomoneda de una dirección a otra.

Multifirma (multisignature). En este tipo de transacción se impone que la operación deba ser validada por más de una clave privada. Esta restricción permite definir marcos colaborativos en los que una transacción precisa el acuerdo entre n partes. A la hora de definir una transacción hay que establecer la dirección de destino. Todas las direcciones vinculadas a transacciones normales se escriben con el prefijo 1, mientras que las direcciones de las transacciones de firma múltiple tienen por prefijo un 3.

P2SH (Pay-to-Script-Hash). Se trata de un tipo de transacción en el que es necesario que se cumpla una serie de condiciones antes de que se lleve a término. Las transacciones de firma múltiple (capítulo 1) son un tipo especial de transacción P2SH. Las direcciones vinculadas a estas transacciones se escriben también con el prefijo 3, y las condiciones se definen a través de un script13.

En el caso de Bitcoin, todas las operaciones vinculadas con la realización de transacciones van a estar escritas en los bloques de datos en los que se registra toda la actividad de la red.

Las instrucciones que aparecen en los scripts están escritas de acuerdo con un lenguaje de programación muy simple: Script, que es una versión reducida del lenguaje Forth. Este lenguaje contiene un total de 256 posibles operaciones o instrucciones, y está orientado a ejecutarse a través de una pila14.

Hay que tener en cuenta que una transacción en Bitcoin no es simplemente el apunte de un intercambio único entre dos usuarios. De hecho, la estructura de datos empleada para registrar las transacciones entre usuarios agrupa un conjunto de operaciones de entrada y de salida, de modo que cada operación de entrada hace referencia a una operación de salida contenida en un bloque previo. Para que esta referencia sea correcta, es necesario que la firma aportada en la operación de entrada del bloque actual se pueda verificar con la clave pública que figura en la correspondiente operación de salida.

Criptografía y protocolo de firma ECDSA en Bitcoin*

De forma más concreta, Bitcoin utiliza criptografía de clave pública mediante curvas elípticas (véase capítulo 1). Recordemos que la curva elíptica que se emplea con el protocolo ECDSA es la curva secp256k1. Los seudónimos de los usuarios se determinan a partir de sus claves públicas, codificándolas mediante el uso de dos funciones resumen: SHA-256 y RIPEMD-160, y una codificación en Base58Check15, de acuerdo con el siguiente esquema:

Se calcula el resumen SHA-256 de la clave pública del destinatario de la transacción.

Al resultado de la operación anterior se le aplica la función resumen RIPEMD-160.

Se añade un prefijo a la salida del paso anterior. En Bitcoin se puede trabajar bien con la red principal, bien con una red de pruebas. Las direcciones de la red principal tienen el prefijo hexadecimal 0x00, mientras que las direcciones de la red de pruebas se notan mediante el prefijo 0xEF.

Una vez se ha añadido el adecuado prefijo, el bloque de bytes es resumido de nuevo mediante SHA-256.

Se seleccionan los primeros cuatro bytes de la salida obtenida en el punto 4. Esos cuatro bytes se utilizan como suma de comprobación o checksum (función CRC, véase capítulo 1).

Se añaden los cuatro bytes anteriores como sufijo de la salida obtenida en el paso 3.

Se codifica el resultado de la operación anterior utilizando formato Base58Check, que incluye como sufijo los cuatro bytes de verificación del punto 5.

Un ejemplo de seudónimo en Bitcoin podría ser

1MFjFmRhCYHt6GjPzXTEFuwSyuZTVAjYWX.

Es muy importante destacar que cada cliente, cada usuario de Bitcoin, genera sus claves de forma unilateral, sin que exista ninguna entidad que supervise esta generación de claves. Es cierto que existe la posibilidad de que se produzca una colisión en la generación de claves, es decir, es plausible que al generar aleatoriamente y de modo independiente varios pares de claves, estos sean idénticos, pero la probabilidad de que ello ocurra es tan baja que puede considerarse despreciable.

Transacciones mediante scripts en Bitcoin*

Las operaciones basadas en la ejecución de instrucciones a través de una pila se suelen escribir en “notación polaca inversa”, que simplemente escribe los operadores después de los operandos. A modo de ejemplo, se tiene que:

3+4 mediante notación inversa se escribe 34+

2*3+4 se representa como 234+*

Las instrucciones del lenguaje Script empleado en Bitcoin siempre empezarán por el prefijo OP_. En el caso de la operación de suma anterior, 34+, la instrucción quedaría codificada como

OP_3 OP_4 OP_ADD

Si quiere hacer una verificación del resultado se hace uso de la operación OP_EQUAL. Así, si hacemos

OP_3 OP_4 OP_ADD OP_5 OP_EQUAL

estaremos comparando el resultado de la operación suma de 3+4 con el valor 5; en este caso, el sistema devuelve FALSE.

Las instrucciones que hemos utilizado en los ejemplos anteriores son lo que denominan opcodes, es decir, códigos de operación16. A continuación, vamos a describir qué opcodes se aplican en el registro de una transacción en Bitcoin en el caso más simple: trasvase de dinero (dado como una porción de bitcoins) desde Alicia a Benito.

Figura 5

Composición de los scripts scriptSig y scriptPubKey en la creación de P2PKH.

<sig> <pubKey> OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG

Cuando Alicia crea una transacción, su cliente Bitcoin bloquea la transacción en cuestión mediante un script. En Bitcoin, cada transacción contiene un script que estipula las condiciones que han de satisfacerse para poder reclamar la salida de la transacción, esto es, el dinero que pasa de Alicia a Benito. La concreción de estas restricciones puede ser más compleja, pero en el caso que nos ocupa simplemente se exigirá que Benito pueda probar que tiene la clave privada correspondiente a la clave pública del destinatario de la transacción creada por Alicia. De facto, hasta que Benito no muestra su clave privada, la transacción está bloqueada y su desbloqueo efectúa el flujo de operaciones definido por un script de tipo P2PKH (figura 5).

Este script en realidad es la combinación de dos scripts, uno de tipo scriptPubKey y otro de clase scriptSig (figura 5), y lleva asociada la ejecución de siete pasos a través de la pila:

En primer lugar, se introduce en la pila la firma del receptor de la transacción (es decir, de Benito) y su clave pública. El estado de la pila tras ello será

<pubKey>

<sig>

A continuación, se efectúa OP_DUP

<pubKey>

<pubKey>

<sig>

La red Bitcoin no tiene acceso directo a la clave pública de ningún usuario. Aquí hay que recordar que solo son públicas las direcciones de los usuarios, y estas se obtienen mediante un doble resumen a partir de la clave pública. Esta operación de conversión de la clave pública se lleva término con OP_HASH_160:

<pubKeyHash>

<pubKey>

<sig>

Se introduce en la pila la dirección de Benito

<pubKeyHash>

<pubKeyHash>

<pubKey>

<sig>

Se ejecuta la operación OP_EQUALVERIFY que se encarga de verificar si los dos últimos valores que hay en la pila son iguales (se hacen dos extracciones de datos desde la pila y una comparación). Si no lo son, se interrumpe la ejecución

<pubKey>

<sig>

En caso de que se verifique de modo satisfactorio la igualdad, se comprueba la firma con OP_CHECKSIG

TRUE

Si la comprobación es correcta, se introduce en la pila el valor TRUE (FALSE en caso contrario).

Como se puede observar en la explicación del proceso anterior, la transmisión de criptomoneda desde Alicia a Benito no precisa en ningún momento la inclusión de dato alguno sobre Alicia en los scripts.

Esto está motivado por el modo en el que se atribuye la propiedad de moneda en Bitcoin según la concatenación de bloques de datos.

En la parte izquierda de la figura 6 podemos encontrar la estructura de los bloques de datos en Bitcoin. Cada bloque de datos contiene una cabecera y un conjunto de transacciones. Además de la versión del sistema Bitcoin, en la cabecera aparece el hash del bloque anterior, la raíz del árbol de Merkle que contiene todas las transacciones del bloque, el sello temporal con la fecha de creación del bloque y dos parámetros (la dificultad y el nonce) que jugarán un papel muy importante en el proceso de minado que explicaremos a continuación.

Como ya se mencionó en el capítulo 1, la función de los punteros hash en Bitcoin es garantizar la integridad referencial entre bloques mediante la construcción de una lista enlazada, mientras que los árboles de Merkle en Bitcoin se utilizan para optimizar el acceso a las transacciones incluidas en un bloque de modo que la raíz de un árbol de Merkle sirve de resumen de todas sus hojas, así como de verificador de su integridad. Esas hojas, por otro lado, son transacciones. En Bitcoin una transacción trx viene dada por un conjunto de entradas y un conjunto de salidas.

Figura 6

Estructura de un bloque de datos en Bitcoin.

En el esquema de la derecha de la figura 6 podemos ver que la i-ésima transacción (trx #i) consta de dos vectores: el vector vin de entradas y el vector vout de salidas. Además, contiene un campo para la versión del protocolo y otro para el valor locktime, que es un parámetro opcional que permite controlar cuándo debe incorporarse la transacción a un nuevo bloque y cuya utilidad se analizará en el capítulo 5. Cada uno de los elementos de vin hace referencia a un elemento de una salida contenida en una transacción de un bloque previo. Para un elemento dado de vin, la transacción referida se recupera buscando el valor trxid de su primer campo en el árbol de Merkle de las transacciones de cada uno de los bloques previos. Como podemos ver en la figura 6, cada elemento de vin y de vout contiene un script de desbloqueo (scriptSig) y de bloqueo (scriptPubKey), correspondientemente. Cuando recuperamos la salida de la transacción trxid en un elemento de vin, pues, estamos realizando la composición entre los dos scripts de acuerdo con el esquema de la figura 5.

En segundo lugar, la suma de todas las cantidades incluidas en las operaciones de entrada de un bloque (vin) tiene que ser menor o igual que la suma de todas las operaciones de salida (vout). Como resultado de todo ello:

Un usuario, más bien la dirección que un usuario posee, tiene la capacidad de usar el conjunto de transacciones recibidas y que no han sido utilizadas. A estas transacciones se las nota con el acrónimo UTXO (Unspent Transaction Output), y constituyen el soporte de la Bitcoin.

Un usuario no tiene forma de saber de dónde le llega una transacción. Eso sí, el usuario es el encargado de hacer públicas las direcciones de su monedero. Por tanto, si un usuario tiene especial interés en saber de dónde le llega el dinero en Bitcoin, puede adoptar como criterio el de generar una nueva dirección cada vez que inicia una relación de intercambio monetario en Bitcoin. Si sigue este criterio, el usuario tendrá una dirección de recepción de transacciones para cada uno de los posibles remitentes con los que interacciona en Bitcoin.

Protocolo de consenso distribuido en Bitcoin: la prueba de trabajo como mecanismo para eludir el intermediario financiero

Hasta ahora contamos con un procedimiento que permite transferir criptomonedas desde un usuario a otro. Es más, dicha transferencia se efectúa protegiendo la identidad de los usuarios; emulando, pues, esta característica esencial del dinero en efectivo. Por otro lado, el dinero en metálico tiene la cualidad de que una vez ha cambiado de propietario no puede volver a ser utilizado por el propietario original. Dicho de otra forma, la traslación de propiedad en el caso del metal o del billete imposibilita posteriores disposiciones por parte de quien paga. En el caso del dinero electrónico no existe bien tangible que evite el problema del doble pago (Karame et al., 2012).

Es decir, cuando un usuario paga una cantidad de dinero en metálico por un bien adquirido, pierde el control de ese dinero, lo que no sucede en el caso del dinero virtual, dado que no hay nada material que se entregue a cambio del bien que se adquiere. Por ello, es importante garantizar que una vez hecho un pago con Bitcoin, la cantidad de criptomoneda utilizada deja de estar disponible para el usuario que ha pagado con ella, de modo que no pueda volver a utilizarla.

En el caso de Bitcoin, la solución a la amenaza del doble gasto viene dada por la prueba de trabajo o PoW. La PoW es un puzle matemático que está basado en la dificultad para encontrar colisiones en funciones resumen (capítulo 1) y exige que la incorporación de un nuevo bloque a la blockchain se produzca única y exclusivamente si se obtiene un valor aleatorio que, concatenado a la cabecera del bloque, dé lugar a un resumen que tenga un cierto número de ceros a la izquierda. El valor aleatorio se conoce como número de un solo uso o nonce (number used once), y no tiene significado más allá de servir de apoyo al puzle matemático de la PoW.

En la figura 7 aparece resumido el procedimiento que se aplica en la resolución del desafío previo a la incorporación de un bloque por parte de un nodo. Como se puede observar en dicha figura, el resultado de la función resumen es comparado con un valor umbral t, que equivale a forzar un cierto número de ceros a la izquierda de la función resumen. En consecuencia, el desafío base de la PoW busca colisiones parciales de la función resumen: cuanto más pequeño es el valor de t, más ceros han de existir a la izquierda de la salida del resumen y, por tanto, más difícil es resolver el desafío.

Figura 7

Prueba de trabajo para la inclusión de nuevos bloques en Bitcoin.

Aunque pueda parecer lo contrario, lo cierto es que el anterior procedimiento de búsqueda de colisiones parciales es un problema de alto coste computacional. Hasta tal punto es así, que solo una porción mínima de los usuarios del ecosistema Bitcoin participan de modo activo en la búsqueda de tales colisiones. Todos esos nodos son los denominados mineros, esto es, nodos que contribuyen al mantenimiento de la red mediante la incorporación de nuevos bloques tras resolver el puzle asociado a la PoW. Esta contribución implica tiempo de cómputo y, por ende, gasto energético y económico para los mineros. Por ejemplo, en España el minado de un bloque de Bitcoin a fecha de marzo de 2018 tiene un coste medio de más de 20.000 euros17.

Ahora bien, esta contribución de los mineros no es desinteresada, ya que el minero que consigue agregar un bloque a la blockchain recibe una recompensa; proceso que equivale a la creación de moneda (nuevas bitcoins). Por este motivo, a la labor de los nodos que buscan colisiones se la denomina “minado”, pues al fin y al cabo supone un esfuerzo por extraer el nuevo metal que conforma la criptomoneda bitcoin.

La cuestión de la recompensa, pues, es un elemento crucial en la estabilidad de Bitcoin. Al igual que ocurría con el dinero fiduciario, el soporte final de la moneda debe ser un bien escaso y, por tanto, caro (como el patrón oro, por ejemplo). En el caso de Bitcoin, el patrón de medida de moneda queda determinado por el consumo energético que los mineros deben realizar para minar nuevos bloques y generar nueva moneda. Si la recompensa por minar disminuye, eso equivale a encarecer el precio de la energía, lo que se puede considerar como una reducción de la capacidad de cómputo disponible en la red. Esta minoración de la recompensa se lleva a cabo cada 21·105 bloques, que equivale aproximadamente a cuatro años18. Desde junio de 2016 la recompensa que recibe un minero tras resolver la PoW es de 12,5 bitcoins y no volverá a cambiar hasta 2020.

Es más, el modelo de moneda en Bitcoin es deflacionario. Así, el número de criptomonedas que se puede generar está limitado a un número total de 21·106 bitcoins, lo que supone que no se podrán generar más criptomonedas después del año 2140. El objetivo de esta limitación no es otro que incorporar un mecanismo que permita evitar la especulación con la criptomoneda. La paulatina merma del rédito que la actividad de minado pueda reportar es una suerte de dique de contención frente a la tendencia especuladora que hemos presenciado desde el origen de Bitcoin.

Dado que Bitcoin es una tecnología cypherpunk, quizá su adscripción como moneda deflacionista sea una inferencia precipitada por la dinámica de tensión que plantea tal colectivo entre los polos de lo instituido y de lo instituyente. En esta lid, dado que el modelo económico liberal de nuestra sociedad es inflacionario, lo lógico es que Bitcoin sea de espíritu deflacionario. Ahora bien, la tendencia observada en la comunidad Bitcoin parece indicar que no sigue patrones económicos muy distintos de otras actividades de negocio. Además, hay que señalar que un bitcoin es infinitamente divisible, lo que facilita la gestión de la moneda incluso en un contexto en el que no se pueda generar nueva criptomoneda. En efecto, la mínima unidad de valor que puede transferirse en Bitcoin es 1 satoshi, que equivale a 0,00000001(=10-8) bitcoins. Esta equivalencia viene derivada de que en Bitcoin se trabaja con precisión de ocho decimales. Ahora bien, este fue un criterio establecido de forma arbitraria por Satoshi Nakamoto al crear Bitcoin y que puede ser modificado aumentando el número de decimales cuando no se pueda generar moneda y se quiera controlar su valor en pos del interés común de la comunidad Bitcoin. Consecuentemente, a todas luces parece que (como en tantos otros casos) la naturaleza final de la criptoeconomía auspiciada por Bitcoin vendrá dada en función de sus condicionamientos técnicos, de acuerdo con las capacidades e intereses de sus usuarios.

Ese cruce de dominios no es una circunstancia exclusiva de Bitcoin, pero la forma en la que se articulan y entreveran sí que es de significada singularidad. Hasta aquí, hemos venido hablando de Bitcoin casi exclusivamente en términos técnicos. Aunque se han subrayado ciertos elementos relevantes sobre la intención política de su autor, así como algunas de sus consecuencias socio-económicas, no se ha incidido en que el funcionamiento de Bitcoin exige un correcto ensamblaje entre elementos criptográficos, el despliegue de una red de comunicación entre pares o P2P y la existencia de una comunidad que sea receptiva al uso de esta tecnología. Si alguno de estos tres elementos no goza de una buena salud, Bitcoin dejará de funcionar.

Un elemento crucial para ese adecuado engranaje es la promoción de incentivos que estimulen la colaboración de los mineros. Como se ha reseñado previamente, los usuarios de Bitcoin engloban tanto a meros consumidores de la infraestructura como a aquellos que de forma activa van capturando nuevas transacciones para generar nuevos bloques que, una vez resuelto el puzle criptográfico de la PoW, son transmitidos a la red P2P de Bitcoin. De modo resumido, el proceso de minado y de propagación de nuevos bloques tiene el siguiente conjunto de características:

• La selección del minero que va a dar entrada a un bloque se realiza de modo no determinístico, dado que es el resultado de la competencia que existe por ser el primero en generar un nuevo bloque con nuevas transacciones. Cada vez que un usuario crea una nueva transacción envía por difusión (broadcasting) una petición de registro. Esa petición de registro es capturada por los nodos de la red P2P de Bitcoin a los que ese usuario tiene acceso, los cuales, a su vez, enviarán la petición a su entorno de vecindad. A la vez que se propaga la solicitud realizada por el emisor, los distintos nodos de la red guardan la transacción en una memoria temporal o mempool. Los nodos que están involucrados en la labor de minado de modo periódico seleccionan transacciones de su mempool para incluirlos en nuevos bloques.

• La integridad referencial de los bloques está garantizada por el hecho de que la cabecera de cada bloque referencia al bloque anterior a través de su resumen. De esta forma, cada vez que se extiende la cadena, un nodo de la red puede comprobar que el resumen incluido en la cabecera de cada bloque en verdad se corresponde con el resumen del bloque previo. Esta comprobación se puede efectuar desde el último bloque al bloque génesis, esto es, el primer bloque que Satoshi Nakamoto creó el 3 de enero de 2009, y a partir del cual se fue desplegando la blockchain de Bitcoin.

• Los mineros obtienen las transacciones de la memoria temporal, de forma que aquellas transacciones que incorporan un pago más elevado por minado son las primeras en ser seleccionadas. En este punto hemos de tener presente que al crear una transacción se debe cumplir que la suma de los valores de entrada tiene que ser mayor o igual que la suma de los valores de salida. Esto significa que el balance de una transacción puede derivar en un balance positivo. Pues bien, este remanente es un pago extra que se les ofrece a los mineros para que seleccionen la transacción a la hora de construir un nuevo bloque.

• Hay que tener en cuenta que, en un momento dado, en la red Bitcoin pueden coexistir dos estructuras: los árboles de bloque y la cadena activa. Esta diferencia surge de la naturaleza P2P de la red de comunicación de Bitcoin. En determinado momento, todos los mineros empiezan a buscar un nuevo bloque que incorpore en una cabecera el resumen del último bloque existente en la cadena. Puede ocurrir que dos nodos mineros resuelvan la PoW y trasmitan por difusión el nuevo bloque. Esa difusión no llega de modo simultáneo a todos los nodos de la red Bitcoin. Por tanto, es posible que ulteriores mineros traten de incorporar nuevos bloques a partir del bloque incorporado por uno de los mineros, mientras que otros harán lo propio considerando el bloque de otro minero. En consecuencia, se produce una bifurcación o fork en la cadena de bloques, tal y como aparece representado en la figura 8. En este estadio se produce la aparición de un árbol de bloques con distintas ramas, una de las cuales es más exitosa que el resto al incorporar una mayor cantidad de bloques. La cadena activa vendrá determinada por la ruta que involucra mayor trabajo por parte de los mineros y que genera más consenso, que no es sino aquella determinada por la lista enlazada de resúmenes desde el bloque génesis a la hoja de esta rama exitosa. Como vemos en la figura 8, este criterio de poda involucra que existirán bloques correctamente minados que no formarán parte del estado de Bitcoin. Esos bloques se denominan “huérfanos”, y aunque son bloques que no forman parte de la cadena activa, eso no significa que se pierdan las transacciones que llevan incorporadas. De hecho, las transacciones incluidas en bloques huérfanos son consideradas como transacciones no confirmadas que eventualmente volverán a la memoria temporal a la espera de que algún minero las incluya en un nuevo bloque.

Figura 8

Ramificación (fork) de la blockchain y aparición de bloques huérfanos.

• La búsqueda de colisiones de funciones resumen es una operación que en el contexto bitcoin hace tiempo que no se ejecuta con ordenadores personales convencionales. Cuando se realizó el primer minado de un bloque bitcoin en 2009, la recompensa era de 50 bitcoins. La alta rentabilidad del minado, pues, hacía interesante dedicar un ordenador con unidad de procesamiento (CPU) de múltiples núcleos a la labor de cómputo de resúmenes. Era interesante y rentable, ya que si se disponía de un par de ordenadores con buenas prestaciones, se podían ganar unos euros al día simplemente por minar. El retorno de inversión de la operación de minado se fue reduciendo, fruto de la confluencia de dos factores. Por un lado, la entrada en juego de un mayor número de competidores; y, por otro, la caída de la recompensa que se produce en la red cada cuatro años. Basta considerar que los 50 bitcoins que se ganaban en 2009 tras minar un bloque, en el momento de escribir este libro eran 12,5 bitcoins. Frente a este encarecimiento del proceso de minado, en septiembre de 2010 Laszlo Hanyecz desarrolló e hizo público un nuevo cliente de minado basado en procesadores GPU (Graphics Processing Units) de tipo CUDA (Compute Unified Device Architecture). Este tipo de procesadores fue originalmente concebido para el procesamiento en paralelo de imágenes, pero Hanyecz explotó su capacidad de trabajo en paralelo para probar de modo simultáneo múltiples nonces y verificar si se conseguía superar la PoW. Sin embargo, este tipo de electrónica no es la más adecuada para buscar colisiones en el caso de que la función resumen sea de la familia SHA-2. En este supuesto es mejor trabajar con diseños basados en FPGA (Field Programmable Gate Arrays), diseños que son la base de los actuales ASIC (Application-Specific Integrated Circuits) de minado. Lo que es más, a medida que fue evolucionando la red Bitcoin, el rol del minero se fue optimizando y profesionalizando. Fruto de esta tendencia, empezaron a surgir iniciativas para la agrupación de mineros y la creación de las denominadas “granjas de minado”. En la actualidad son estas granjas de minado las que sostienen la red Bitcoin, siendo imposible que un minero de forma individual y aislada pueda competir con magnates de la industria de minería de criptomonedas como Bitmain/Antpool, Bitfury, DiscusFish/F2Pool, BTCC/BTC China o Eligius.

• Por estricta decisión de diseño, el tiempo transcurrido entre la inclusión de dos bloques consecutivos en la blockchain de Bitcoin ha de ser de 10 minutos. Este es un criterio conservador que persigue garantizar la propagación del nuevo bloque a toda la red P2P de Bitcoin. Para garantizar esta tasa de generación de nuevos bloques, cada 2016 bloques se reajusta el parámetro de dificultad que figura en la cabecera de los bloques (figura 7) de acuerdo con la siguiente fórmula:

Dn = Dv·2016·10/Ti

donde Dn es la dificultad nueva, Dv es la dificultad vieja y Ti es el tiempo invertido en minar los últimos 2016 bloques. Aquí cabe preguntarse cómo la red Bitcoin puede imponer un valor determinado para el parámetro de dificultad sin que exista ninguna autoridad central. De nuevo hay que recordar que Bitcoin es un esquema criptográfico de protección de información, un protocolo de comunicación no centralizado y un modelo de consenso propiciado por el interés de los usuarios por la sostenibilidad del sistema. Este último punto es el que hace factible la imposición del criterio de actualización del parámetro de dificultad. En efecto, una vez que ha sido minado un bloque, cualquier nodo de la red puede verificar si el valor del campo de dificultad coincide con el esperado de acuerdo con la fórmula de más arriba. En caso de que se detecte alguna incoherencia bien en ese valor, bien en el resumen de la cabecera del bloque, el nodo descartaría el bloque. De este modo, el minero responsable de este bloque perdería la oportunidad de generar la cadena más larga y, por ende, no recibiría recompensa alguna.

Más allá de Bitcoin: aplicación de blockchain como soporte de protocolos generales de comunicación

Tal y como reza el llamado “principio de Skolnikoff” (Skolnikoff, 1994), los usos que se hacen de una tecnología en muchas ocasiones no coinciden con la utilidad que se le presuponía cuando fue creada. El acoplamiento entre la tecnología y sus usuarios, en efecto, contribuye a la configuración y reacondicionamiento de la tecnología. Al igual que ocurría con la aplicación del servicio SMS para realizar pagos en M-Pesa, la estructura de datos que soporta la infraestructura Bitcoin es un ejemplo paradigmático de este proceso de conformación de la novedad tecnológica.

Además de los scripts a los que hemos hecho mención, en Bitcoin existen otras funcionalidades debidamente codificadas mediante Script. Sin entrar en el detalle (para obtener más información véase Narayanan et al., 2016), lo que sí conviene resaltar aquí es la forma en la que se ha venido configurando toda una serie de servicios explotando la definición abierta del script Proof-Of-Burn. Este tipo de script tiene por objetivo usar criptomonedas sin que exista destinatario alguno. Para ello existen dos opciones: 1) se crea una transacción que tiene por destino una dirección que no tiene clave privada alguna19, y 2) se hace uso de una instrucción específica del lenguaje Script o código de operación (en concreto del opcode OP_RETURN) que genera un error e interrumpe la ejecución del código contenido en una transacción, de forma que no importa la información que estuviera contenida después de un OP_RETURN. Esta circunstancia abre la posibilidad de utilizar la instrucción OP_RETURN como un canal de almacenamiento de información dentro de un protocolo de comunicación general. En la actualidad, este canal tiene una longitud máxima de 83 bytes, lo que constituye una clara limitación en cuanto al tipo de mensajes que se pueden enviar a través de él. Ahora bien, ese tamaño puede ser suficiente de cara a implementar un canal de control que habilite la verificación de información incluida en protocolos más complejos. De hecho, existe un muy amplio abanico de modelos de negocio que utilizan la información opcional del OP_RETURN para monitorizar activos de diverso tipo, para efectuar servicios de notaría documental o para desplegar mecanismos de protección de la propiedad intelectual (Bartoletti y Pompianu, 2017).

La instrucción OP_RETURN no es ni mucho menos la única instrucción que se puede utilizar para construir un protocolo de comunicación. Efectivamente, la estructura de datos de Bitcoin incluye campos libres en las siguientes estructuras de datos (Franco, 2014):

Transacciones coinbase. Este tipo de transacciones es el que está relacionado con la creación de nuevas monedas. Cuando un minero gana “la lotería” de la PoW (Narayanan et al., 2016) se crea una transacción distinta de las normales y se almacena en la primera hoja del árbol de Merkle de las transacciones (capítulo 1 y figura 7). Las principales diferencias de una transacción coinbase respecto a las normales son:

Solo tiene una entrada y una salida.

La entrada no está respaldada por la salida de una transacción previa, con lo que el resumen que aparece en la transacción no apunta a bloque alguno y, por ello, se dice que es un puntero resumen nulo.

La recompensa que se ha recibido por minar el bloque. Su valor vendrá dado por la recompensa por defecto de la red más el excedente determinado por las entradas de la transacción.

Es un campo arbitrario que puede ser utilizado por el minero para escribir en la blockchain aquello que desee y, en consecuencia, hace factible su utilización como parte de un protocolo externo a Bitcoin.

Direcciones falsas. Al igual que se hace al emplear OP_RETURN, se puede enviar dinero a una dirección falsa (es decir, que no tiene clave privada asociada) que codifica la información que queremos almacenar en la blockchain. Como toda transacción, su emisión tiene un coste, que como mínimo debe ser igual a 546 satoshis, que es el coste de una transacción polvo (dust transaction).

Transacciones con múltiples firmas (multisignature). Tal y como se reseñó anteriormente, en Bitcoin existe un tipo especial de transacción en la que la recepción de la cantidad transferida puede requerir el concurso de más de un usuario. De modo general, deben firmar m usuarios de un total de n posibles (con m ≤ n). En el caso que nos ocupa, podemos considerar transacciones con múltiples firmas de tipo 1-de-n, esto es, solo necesitaremos tener una dirección válida para poder reclamar la cantidad asociada a la transacción. Como resultado, el resto de direcciones pueden ser falsas y emplearse para codificar información extra. Eso sí, cabe subrayar que en la implementación actual el valor máximo de n es 3, lo que reduce considerablemente la capacidad de almacenamiento mediante este procedimiento.

Ir a la siguiente página

Report Page