• No se han encontrado resultados

Desarrollo de un sistema blockchain escalable aplicando PoS: SigCoin, una criptomoneda escalable

N/A
N/A
Protected

Academic year: 2022

Share "Desarrollo de un sistema blockchain escalable aplicando PoS: SigCoin, una criptomoneda escalable"

Copied!
68
0
0

Texto completo

(1)

Escuela Politécnica Superior

20 21

Trabajo fn de grado

Desarrollo de un sistema blockchain escalable aplicando PoS

www .uam.es

Víctor Yrazusta Ibarra

Escuela Politécnica Superior Universidad Autónoma de Madrid C\Francisco Tomás y Valiente nº 11

(2)
(3)

UNIVERSIDAD AUTÓNOMA DE MADRID

ESCUELA POLITÉCNICA SUPERIOR

Grado en Ingeniería Informática

TRABAJO FIN DE GRADO

Desarrollo de un sistema blockchain escalable aplicando PoS

SigCoin, una criptomoneda escalable

Autor: Víctor Yrazusta Ibarra Tutor: Javier Aracil Rico

(4)

Todos los derechos reservados.

Queda prohibida, salvo excepción prevista en la Ley, cualquier forma de reproducción, distribución comunicación pública y transformación de esta obra sin contar con la autorización de los titulares de la propiedad intelectual.

La infracción de los derechos mencionados puede ser constitutiva de delito contra la propiedad intelectual (arts. 270 y sgts. del Código Penal).

DERECHOS RESERVADOS

© 26 de Mayo de 2021 por UNIVERSIDAD AUTÓNOMA DE MADRID Francisco Tomás y Valiente, no 1

Madrid, 28049 Spain

Víctor Yrazusta Ibarra

Desarrollo de un sistema blockchain escalable aplicando PoS

Víctor Yrazusta Ibarra

Avenida Monasterio de El Escorial 35

IMPRESO EN ESPAÑA – PRINTED IN SPAIN

(5)

A mis hermanos y mi madre

Desconfío de todos los sistemáticos y me alejo de ellos.

(6)
(7)

Prefacio

En el desarrollo de este proyecto el propósito principal ha sido el de realizar una aportación que quizá nos permita entender mejor cómo una tecnología como el blockchain puede evolucionar y estan- darizarse de manera sostenible.

Creo que muchos de los aspectos relacionados con teorías económicas y de juegos que se tratan en este trabajo son profundos, y su estudio puede aportar grandes avances, no solo en el ámbito de las criptomonedas, sino también en todos aquellos necesitados de consenso y confanza.

Víctor Yrazusta Ibarra

(8)
(9)

Agradecimientos

Me gustaría agradecer a mi familia por el apoyo, a mis amigos tanto dentro como fuera de la facultad, y al personal docente de la Escuela Politécnica Superior.

(10)
(11)

Resumen

En los últimos años hemos visto crecer la popularidad y aceptación de nuevas divisas digitales ba- sadas en criptosistemas de claves asimétricas y protocolos necesitados de consenso. Esta escalada de confanza y exposición mediática ha propulsado el desarrollo de criptodivisas y esquemas distribui- dos orquestados mediante la tecnología de cadena de bloques (en adelante también blockchain).

Planteándose la voluntad de una adaptación masiva de esta tecnología con el fn de sustituir otros medios de pago, reservas de valor o sistemas no distribuidos, nos encontramos con la difcultad de conseguir una cadena de bloques totalmente escalable, y cuyas bases de diseño encajen con un uso extendido de sus funcionalidades. Frente a este problema son diversos los enfoques, y muchos los equipos que tratan de realizar nuevos proyectos en este campo aún por desarrollar.

En este contexto, el objetivo de este trabajo es razonar sobre estas cuestiones, e idear un esquema que plantee una solución a este problema de escalabilidad manteniendo el resto de garantías propias de un sistema blockchain.

Palabras clave

Blockchain, criptomonedas, teoría de juegos

(12)
(13)

Abstract

Recently we have seen grow the popularity and acceptance of new digital currencies based in public- key cryptography cryptosystems and consensus protocols. This trust escalation and mediatic exposure has propelled the development of cryptocurrencies and distributed squemas orquestated through the blockchain technology.

Considering the will of a broad public adaptation of this technology with the intempt of replacing other payment methods, value reserves or centralized systems, we found the diffculty of designing a fully scalable blockchain, whose bases allow for an extensive use of its functionalities. Against this problem, there are different approaches, and many the teams that try to carry out new projects in this feld yet to be developed.

In this context, the aim of this work is to think about these questions, and to come up with a scheme that proposes a solution to this scalability problem maintaining the rest of the guarantees of a blockchain system.

Keywords

Blockchain, cryptocurrencies, game theory

(14)
(15)

Índice

1 Motivación 1

1.1 Bitcoin, ¿El dólar del futuro? . . . 1

1.2 Los límites de las criptodivisas . . . 1

1.3 Objetivos . . . 2

2 Introducción 3 2.1 Blockchain: la cadena de bloques . . . 3

2.1.1 Estructura de la cadena de bloques . . . 3

2.2 Criptografía asimétrica . . . 4

2.3 Consenso en la cadena de bloques . . . 4

2.3.1 Proof of Work . . . 4

2.3.2 Proof of Stake . . . 5

2.4 Ataques y garantías . . . 6

2.4.1 Double Spend . . . 6

2.4.2 Sybil . . . 7

3 Estado del arte 9 3.1 Bitcoin y su hegemonía . . . 9

3.2 Blockchain de segunda generación . . . 10

3.3 Blockchain de tercera generación . . . 11

3.4 La actualidad del PoS . . . 13

3.4.1 El intento de Ethereum . . . 13

3.4.2 Peercoin y la implementación del PoS . . . 14

3.4.3 El futuro del PoS con Cardano . . . 14

4 SigCoin 17 4.1 Bloques dentro de la red . . . 17

4.1.1 Bloques minados . . . 17

4.1.2 Bloques frmados . . . 18

4.1.3 Bloques de época . . . 19

4.2 La cadena de bloques . . . 19

4.3 La razón de los bloques frmados . . . 20

4.4 La razón de los bloques de época . . . 20

4.5 Difcultades de minado . . . 20

(16)

4.5.1 Difcultad de bloque minado . . . 21

4.5.2 Difcultad de bloque de época . . . 21

4.6 Transacciones . . . 21

4.7 Incentivos . . . 22

4.7.1 Incentivos al minado de bloques minados . . . 22

4.7.2 Incentivos al minado de bloques de época . . . 23

4.7.3 Incentivos al frmado . . . 24

4.8 Algoritmo de selección del frmador . . . 25

4.9 Selección de la cadena principal . . . 26

5 Análisis del protocolo SigCoin 29 5.1 Coste computacional del algoritmo de selección del frmador . . . 29

5.2 Ataques en Sigcoin . . . 29

5.2.1 Block designing . . . 30

5.2.2 Double Spend . . . 31

5.3 Uso de SHA3 . . . 31

6 Pruebas y rendimiento 33 6.1 Máximo throughput sostenido . . . 33

6.2 Throughput en un desarrollo ideal . . . 33

6.3 Throughput en un entorno realista . . . 35

7 Conclusiones 37

8 Trabajo futuro 39

Bibliografía 41

Apéndices 43

A Algoritmo de selección del frmador en Python 45

B Constantes en Sigcoin 47

xvi

(17)

Listas

Lista de códigos

A.1 Algoritmo de selección del frmador . . . 45

B.1 Constantes en Sigcoin . . . 47

Lista de fguras

2.1 Ejemplo de una cadena blockchain . . . 3

3.1 Capitalizaciones de criptomonedas . . . 10

3.2 Simulación de velocidad de la cadena en GHOST . . . 11

3.3 TR/ETH . . . 12

3.4 Transacciones por segundo con Ouroboros . . . 13

3.5 Comparación de sistemas blockchain . . . 14

3.6 Roadmap de Cardano . . . 15

4.1 Ejemplo de una cadena blockchain . . . 19

4.2 Cadena de bloques en Sigcoin . . . 20

4.3 Ejemplo de una transacción . . . 22

4.4 Recompensa de bloque minado . . . 23

4.5 Recompensa de bloque de época . . . 24

4.6 Tabla de outputs fnal . . . 25

4.7 Blockchain de ejemplo 1 . . . 26

4.8 Blockchain de ejemplo 2 . . . 26

5.1 Probabilidades . . . 30

6.1 Máximas transacciones por segundo en Sigcoin . . . 34

6.2 Transacciones por segundo en un desarrollo ideal de la cadena . . . 34

6.3 Evolución realista de la cadena . . . 35

(18)
(19)

1

Motivacion ´

En este capítulo trataré de sintetizar el objetivo del proyecto, planteando los objetivos teóricos a grandes rasgos del mismo.

1.1. Bitcoin, ¿El dólar del futuro?

Para entender el desarrollo de la tecnología blockchain y de este proyecto en particular, es funda- mental comprender los preceptos de Bitcoin, qué consigue y qué aporta. Esto es debido a que todo avance en el campo, incluido este proyecto, trabaja sobre estas bases.

En los siguientes capítulos describiré en profundidad el funcionamiento de Bitcoin y su tecnología.

De momento podemos considerar Bitcoin simplemente como un sistema de pagos virtual, en el cual los usuarios pueden realizar transacciones, y tienen ciertas garantías sobre los pagos que efectuan, principalmente que quedan registrados y son accesibles. En este sistema cada usuario tiene una cer- teza del dinero que tiene, y las transacciones son fácilmente validables. Esta robustez es, en esencia, la que debería ofrecer cualquier moneda o método de pago moderno.

Conociendo simplemente estas características de Bitcoin, a saber, que es un sistema de transac- ciones virtuales que aplica tecnología puntera, se podría especular sobre su uso como medio de pago sustituto de otras monedas. ¿Podría ser Bitcoin el dólar del futuro? Hay una gran cantidad de empre- sas que están apostando por este nuevo método de pago, como por ejemplo PayPal, quien ya permite realizar transacciones con diferentes criptodivisas en todos los sitios que trabajen con ellos [1].

La respuesta a este pregunta es claramente no, Bitcoin no puede ser el dólar del futuro. En su diseño no se contempló un avance de su tecnología ni una adaptación a gran escala.

1.2. Los límites de las criptodivisas

El diseño de Bitcoin estipula que, de media, se añade un bloque a la red cada 10 minutos [2]. Cada uno de estos bloques puede contener un máximo de 1MB de información, lo que implica que la red

(20)

Motivacion´

Bitcoin tiene una capacidad máxima de procesamiento de transacciones de 3.3 a 7 transacciones por segundo [3].

Esta capacidad de procesamiento resulta muy baja, incapaz de soportar la carga de transacciones que sí manejan tanto medios físicos de pago (en efectivo), como otros medios virtuales. En la red Visa, por ejemplo, ya existen más de 3000 millones de tarjetas funcionales [4].

Ante esta situación se podría pensar en aumentar el número de bloques que se añaden en la red o su tamaño, pero esto no arregla el problema. Aunque hiciésemos que los bloques se añadiesen a mucha velocidad, solo lograríamos multiplicar por un factor lineal la cantidad de transacciones que se pueden procesar por segundo, lo cual no es sufciente, y además estaríamos causando una gran cantidad de problemas en el proceso. Esta limitación es una de diseño, y por lo tanto requiere de un protocolo diferente para poder ser resuelta.

También resulta notorio que, en el esquema de Bitcoin, una variación en la capacidad computacio- nal de la red no implica una mayor capacidad de procesamiento de transacciones. De hecho, no afecta en absoluto.

1.3. Objetivos

Vistas estas limitaciones de Bitcoin (y todas sus similares), el objetivo de este proyecto es tra- tar de dar una solución creativa mediante la creación de un nuevo protocolo. Estos objetivos serían, principalmente:

Lograr dar soporte a una cantidad arbitrariamente grande de transacciones por segundo

Aprovechar la capacidad de cómputo de la red para aumentar la certifcación de transacciones

Construir un protocolo escalable

Lograr todo lo anterior manteniendo las bondades de criptomonedas como el Bitcoin (descentralización, seguri- dad y confanza)

Desarrollo de un sistema blockchain escalable aplicando PoS 2

(21)

2

Introduccion ´

En esta sección haré una introducción técnica a las bases sobre las que se cimienta la idea del proyecto.

2.1. Blockchain: la cadena de bloques

El blockchain, o cadena de bloques, es una estructura de datos. No solo otorga persistencia de la información que contiene, sino que además da unas garantías sobre su no modifcación. Es esta propiedad, junto a su modularidad, la que la hace clave en el desarrollo de las criptomonedas.

Aunque sus usos no se limitan al ámbito de las criptomonedas, para este proyecto únicamente se estudia en relación a ellas.

2.1.1. Estructura de la cadena de bloques

Una cadena de bloques está compuesta por una serie de bloques. Cada uno de estos bloques posee cierta información, que tanto en Bitcoin como en este proyecto son principalmente transaccio- nes, y una referencia al bloque anterior. Esta referencia normalmente es el valor de una función hash criptográfca de la información del anterior bloque. De esta manera es la propia función hash la que proporciona un ID al bloque.

Figura 2.1: Ejemplo de una cadena blockchain

Esta referencia a los hash de la información contenida por los bloques difculta mucho la modif- cación de parte de la información de la cadena. Si alterásemos la información de un bloque, su hash

(22)

Introduccion´

cambiaría, y por lo tanto tendríamos que modifcar todas las referencias de los bloques posteriores. Es esto parte de lo que otorga seguridad a las criptomonedas.

2.2. Criptografía asimétrica

La criptografía juega un papel fundamental en el desarrollo de las criptomonedas, especialmente la criptografía asimétrica.

Como ya hemos visto, en la cadena de bloques podemos incluir información, y podemos garanti- zar que no va a ser modifcada con posterioridad, pero no nos ofrece una manera de otorgar a esta información de autenticidad. Es aquí cuando entra en juego la criptografía asimétrica.

Estos esquemas criptográfcos asimétricos posibilitan la creación de pares de clave pública-clave privada. Mediante el conocimiento de la clave pública de un usuario se pueden encriptar mensajes, que solo podrán ser desencriptados conociendo la clave privada de ese mismo usuario. Mientras que resulta computacionalmente sencillo obtener la clave pública sabiendo la clave privada, es inviable realizar el proceso inverso.

Existen varios esquemas de criptografía asimétrica, pero tanto en Bitcoin como en este proyecto se utiliza la criptografía de curvas elípticas.

2.3. Consenso en la cadena de bloques

El pilar fundamental del proyecto está relacionado con las maneras de obtención de consenso en la red. Las cadenas de bloques de las criptomonedas están distribuidas, por lo que no exite una noción de servidor principal o propietario de la cadena. Aún con esto, todos los nodos de la red han de llegar a un consenso sobre qué bloques pertenecen a la cadena y cuales no.

Existen dos acercamientos que nos pueden ayudar a lograr un consenso, es decir, que permiten discernir de manera determinista entre bloques válidos e inválidos, y nos permiten determinar cuál es la cadena principal de la red. Estos son el Proof of Work y Proof of Stake

2.3.1. Proof of Work

El Proof of Work es el método más común de certifcación de bloques y medio de consenso en las redes distribuidas. Bitcoin fue la primera criptomoneda que lo popularizó [2], y se lleva utilizando de manera extensiva desde entonces.

Podemos pensar en un sistema de consenso como una votación, en la cual se vota al siguiente

Desarrollo de un sistema blockchain escalable aplicando PoS 4

(23)

2.3. Consenso en la cadena de bloques

bloque que será añadido en la red. Bajo un esquema de Proof of Work, la capacidad de voto está ligada a la capacidad computacional disponible por cada usuario. Esto vincula un poder virtual dentro de la red a valores tangibles, como pueden ser máquinas de procesamiento y electricidad.

En Bitcoin, para añadir un nuevo bloque, este tiene que cumplir con una restricción en el valor de su hash. Esta restricción es llamada difcultad, y va variando en función de la velocidad con la que se añaden nuevos bloques, para tratar de mantener esa constante de un bloque añadido cada 10 minutos.

La única estrategia viable para poder añadir un bloque es ir modifcando el valor del campo nonce del bloque, e ir calculando los valores hash hasta dar con un valor que se ajusta con la restricción de la red.

De esta manera, una vez que se propone un siguiente bloque, todos los nodos de la red pueden verifcar, enO(1), la validez de dicho bloque, y saben que la probabilidad de que un nodo añada un bloque es proporcional a la capacidad computacional que dispone.

Hay otro requisito para el consenso que Bitcoin resuelve mediante el Proof of Work, y es, ¿Cómo saber cual es la rama principal? Diferentes bloques se han podido proponer como sucesores a otro, y todos pueden cumplir esa restricción de difcultad. Cuando esto ocurre, la cadena de bloques se ramifca, y se pierde la noción de determinismo de los datos que necesitamos dentro del sistema.

Unas transacciones han podido ser incluidas en un bloque y no en otro, de manera que no existe un consenso sobre su validez. En Bitcoin la solución es simple, y se resume en que la cadena más larga es la cadena principal. Es esta cadena la que más recursos computacionales ha visto invertidos en ella, y por lo tanto se puede suponer que es sobre la que exite un mayor consenso.

2.3.2. Proof of Stake

El Proof of Stake es una alternativa al Proof of Work que no vincula directamente la capacidad de voto con recursos físicos, sino que lo hace con recursos dentro de la red. En este sentido, quien más poder de voto tiene no es quien más capacidad computacional tiene, sino quien más monedas posee dentro del protocolo.

Esto tiene diversas ventajas, pero la principal es que no se requiere de un gasto de recursos físicos para el funcionamiento del sistema. Según algunas estimaciones, la red Bitcoin consume más electricidad que paises enteros como Suecia [5]. Si emplease un esquema de Proof of Stake en vez de uno Proof of Work vería ese consumo reducirse a uno insignifcante, ya que la mayoría del mismo viene por el cálculo de la función hash de los bloques.

El problema del Proof of Stake es el llamado Nothing at Stake, y es el hecho de que, en una rami- fcación, no existen incentivos dentro de la red para que haya una única rama que siga incorporando bloques y se convierta en la principal. En la red Bitcoin, un minador que utilice su poder computacional en una rama que no se va a convertir en la principal lo está desperdiciando, pero esto no es así en

(24)

Introduccion´

un esquema de Proof of Stake, ya que la operación de certifcación de posesión de monedas es muy rápida computacionalmente. Como veremos en el análisis del estado del arte, es esta cuestión la que difculta la aparición de criptomonedas que usen este protocolo.

2.4. Ataques y garantías

Como en todo sistema, en las criptomonedas existen numerosos ataques conocidos que se pue- den realizar, y su viabilidad y difcultad nos permiten saber si un protocolo es robusto. Al analizar la estructura de SigCoin, veremos qué riesgos asumimos frente a estos ataques, y se expondrán más en detalle.

2.4.1. Double Spend

Este tipo de ataque consiste en intentar gastar dos o más veces una misma criptodivisa. Esto es posible por la naturaleza del blockchain descentralizado, en el cual esa idea de consenso es, en última instancia, probabilística.

En un sistema como Bitcoin, se puede realizar este ataque siguiendo los siguientes pasos. Supon- gamos que A quiere gastar dos veces la misma cantidad, una vez enviándosela a B y otra a C:

1.– Conseguir que una transacción de A a B se incluya en un bloque. En este momento B poseerá la cantidad de criptomoneda que A quería gastar

2.– Crear una ramifcación de la cadena de bloques que no contenga la transacción de A a B 3.– Añadir una transacción de A a C en esta nueva ramifcación

4.– Lograr que la nueva ramifcación sea la rama principal

¿Qué necesitaría A, el atacante, para realizar el ataque? En Bitcoin, y la mayoría de protocolos sobre PoW, el atacante necesitaría tener una capacidad computacional sufciente para llevar a cabo el 4º punto, lograr que la nueva ramifcación se convierta en la principal. Para esto necesita que esa rama sea la más larga. Suponiendo que el atacante no hace pública la rama hasta que consigue que sea más larga que la principal, necesitaría tener más capacidad computacional que todo el resto de la red junta.

En un esquema tradicional, se necesita que ningún nodo consigua una cantidad de computación cercana al 50 %. Este tipo de ataque es estudiado en el whitepaper original de Bitcoin, en el capítulo 11, Calculations [2].

Desarrollo de un sistema blockchain escalable aplicando PoS 6

(25)

2.4. Ataques y garant´ias

2.4.2. Sybil

Este tipo de ataque consiste en la creación de una gran cantidad de pseudónimos, o usuarios, dentro de la red, con el fn de ganar una gran infuencia. En la mayoría de esquemas criptográfcos, la única noción de usuario que existe es los pares de claves pública-privada, que resultan muy sencillos de generar.

La razón por la cual este tipo de ataque no afecta a la mayoría de criptomonedas es porque el poder dentro de la red no está vinculado con los pseudónimos, sino con la capacidad computacional, en el caso del PoW, o con la cantidad de activos dentro de la red, en el caso del PoS.

(26)
(27)

3

Estado del arte

En esta sección realizaré un análisis sobre el estado del arte en el mundo del blockchain y las criptomonedas, repasando las tecnologías más populares y utilizadas.

3.1. Bitcoin y su hegemonía

Bitcoin es la primera criptomoneda que aunó los requisitos que hoy utilizamos para defnirlas. Es la más popular, y todo el desarrollo de la tecnología blockchain en los últimos años ha venido impulsado por esta popularidad.

Según un estudio del Deutsche Bank de hace un mes, el valor de Bitcoin en circulación sería el tercero en comparación con el resto de monedas FIAT (excluyendo el Yuan chino) [6], lo que expresa la gran magnitud de este activo, y el interés en su desarrollo. En este estudio también se comparan la cantidad de transacciones entre divisas, y se menciona la enorme diferencia entre las transacciones realizadas con Bitcoin y el resto de monedas.

Si comparamos la capitalización de mercado de Bitcoin con el resto de criptomonedas encontramos que a día de hoy representa poco más del 50 % del total, seguido de Ethereum.

El protocolo de Bitcoin no ha evolucionado con el tiempo, ya que su diseño no lo contempla. Para que se produzcan actualizaciones que requieran un cambio signifcativo, y no sean retrocompatibles con las funcionalidades estrictas del protocolo anterior, se ha de bifurcar la cadena de bloques, lo que se conoce como un Fork. A partir de ese punto, conviven dos propuestas diferentes dentro de la red.

Con el fn de lograr nuevas funcionalidades y expandir el uso de la tecnología blockchain, han ido surgiendo una variedad de diferentes proyectos, algunos de los cuales sí contemplan actualizaciones en su sistema.

(28)

Estado del arte

Figura 3.1: Capitalizaciones de criptomonedas, segúnhttps://coinmarketcap.com/

3.2. Blockchain de segunda generación

El blockchain de segunda generación busca otorgar de una mayor funcionalidad a la cadena de bloques. Hasta este punto en el desarrollo de las criptomonedas, siempre eran entendidas como un medio de transacciones virtuales.

El principal avance fue la creación de contratos inteligentes, o smart contracts, según los cuales no únicamente se pueden realizar simples transacciones entre partes, sino que se pueden registrar contratos más complejos.

El proyecto más importante dentro de este ámbito es Ethereum, que no provee solo un esquema bajo el cual estructurar contratos inteligentes, sino que plantea un lenguaje de programación Turing completo [7].

Conviene entender que este avance es relativo a la información que queda registrada en la cadena de bloques, y no a la propia estructura de la cadena, que es sobre lo que trata SigCoin. Es por esto que no haré un análisis en profundidad de los contratos inteligentes, y muchas otras funcionalidades que pueden utilizar la tecnología blockchain.

En cuanto a la estructura de la cadena Ethereum sí que realiza algunos avances interesantes.

Implementa una versión del protocolo GHOST simplifcada, que atañe a la elección de la cadena principal. Bajo este protocolo, la cadena más larga no es necesariamente la principal, como sí que ocurre en Bitcoin, si no que se tienen en cuenta también las longitudes de las cadenas tío, o uncle, para

Desarrollo de un sistema blockchain escalable aplicando PoS 10

(29)

3.3. Blockchain de tercera generacion´

ponderar la cantidad de Proof of Work que garantiza su validez. Esto permite aumentar la velocidad a la que crece la cadena sin aumentar tanto la vulnerabilidad a ataques como el Double Spend Attack. El lector es referido al whitepaper de Bitcoin [2] y al del protocolo GHOST [8], ya que en ambos se realiza un análisis mediante modelos matemáticos de por qué el aumentar esta velocidad de crecimiento de la cadena de bloques compromete la seguridad.

Figura 3.2: Evolución de la vulnerabilidad de los protocolos en función de la velocidad de crecimiento de la cadena [8]

Pese a estas aparentes mejoras y complicaciones para la elección de la cadena principal, la red de Ethereum sigue dependiendo principalmente del uso de Proof of Work para añadir bloques a la red, utilizando el algoritmo ETHash, e impone una limitación a la cantidad de transacciones que pueden ser procesadas por segundo.

3.3. Blockchain de tercera generación

Mientras que el llamado blockchain de segunda generación está bien defnido y cuenta con un ex- ponente claro, esto no ocurre con el blockchain de tercera generación. En esta generación se agrupan diferentes proyectos que buscan dar una respuesta a las limitaciones presentes en el resto de esque- mas blockchain, de los cuales la mayoría se encuentran en desarrollo activo, y no han logrado aún proporcionar una plataforma que soporte todo lo que prometen.

En este grupo destacan algunos proyectos, como Cardano. Este cuenta con diversas fases marca- das de desarrollo, mediante las cuales pretende ir otorgando funcionalidades al sistema, como contra- tos inteligentes, escalabilidad y Proof of Stake con una gran descentralización. Dentro del proyecto de Cardano se ha realizado un extenso y profundo análisis sobre los esquemas de consenso basados en Proof of Stake, como Ouroboros, con el que se han logrado cantidades de transacciones por segundo

(30)

Estado del arte

Figura 3.3: Transacciones por segundo en Ethereum vs en Bitcoin, según https://

blockchair.com/

del orden de 250 [9].

Además, en el whitepaper original de Ouroboros, se expone una demostración sobre un nuevo sistema de recompensas en el cual una actitud honesta dentro de la red representa un equilibrio de Nash aproximado [9], con lo que ningún actor se ve incentivado a presentar actitudes deshonestas dentro del sistema. En la versión implementada en Cardano, Ouroboros divide la cadena de bloques entre épocas y espacios (slots). Cada espacio representa unos 20 segundos, y las épocas suponen una agregación de espacios, representando unos cinco días.

Después de esta implementación inicial, se han ido desarrollando otros planteamientos que han ido otorgando a la red de más garantías. Con Ouroboros Praos el equipo de Cardano consiguió aumentar la seguridad del protocolo frente a ataques adapatativos, demostrando también que se trata de un sistema con un equilibrio de Nash aproximado [10].

Con Ouroboros Genesis crean un protocolo pensado para actuar en situaciones de disponibilidad dinámica, en el que no todos los nodos tienen una conexión y disponibilidad plena y constante, sino que es algo variable [11]. Esta distinción es importante, pues en una cadena de bloques distribuida como Bitcoin no existe esa conexión plena, y un ente externo a la red ha de ser capaz de validar toda la información de la cadena de bloques simplemente a partir de su bloque inicial, o bloque génesis.

En este trabajo también desarrollan una nueva técnica para analizar el protocolo desde este ámbito de disponibilidad dinámica y atacantes adapatativos.

En la misma línea se elaboró Hydra, un esquema que trabaja con state channels isomórfcos para aumentar la efciencia y velocidad del protocolo [12]. Estos state channels son maneras de realizar

Desarrollo de un sistema blockchain escalable aplicando PoS 12

(31)

3.4. La actualidad del PoS

Figura 3.4: Transacciones por segundo con Ouroboros [9]

transacciones o contratos virtuales principalmente fuera de la propia cadena de bloques, pero con- tando con las garantías de la tecnología blockchain y quedando refejadas en última instancia en la misma. Estos últimos avances no tienen estricta relación con el esquema de desarrollo de la cadena de bloques, y por lo tanto quedan fuera del ámbito de este proyecto.

3.4. La actualidad del PoS

Después de todos los avances vistos en las diferentes generaciones de la tecnología blockchain, podemos comprobar que aún no existe un protocolo relevante que trabaje principalmente aplicando los conceptos del PoS de una manera completamente descentralizada.

Pese a esto, existe un gran interés por la implementación de estos conceptos, y son varios los intentos que se están realizando desde diferentes proyectos para llegar a desarrollar un protocolo blockchain escalable.

3.4.1. El intento de Ethereum

Durante el desarrollo del protocolo de Ethereum se planteó la posibilidad de implementar toda la funcionalidad sobre una cadena de bloques estructurada mediante PoS. Pese a esta idea inicial, fnalmente fue descartada, debido a la gran cantidad de retos conceptuales que surgían al aplicar PoS.

Es por esto que la red de Ethereum funciona aplicando PoW, y utilizando el algoritmo ETHash para esa demostración de computación [7].

Hoy en día, el equipo de Ethereum está trabajando en una nueva actualización del protocolo, Ethe-

(32)

Estado del arte

reum 2.0. Esta nueva versión promete aplicar fnalmente un esquema PoS, pero aún no está claro el planteamiento de la estructura, y no ha sido publicado ningún paper que describa concisamente esta implementación.

3.4.2. Peercoin y la implementación del PoS

Peercoin es una criptomoneda que se considera pionera en la implementación del Proof of Stake.

Su estructura es muy similar a la que utiliza Bitcoin, e incluye la idea de bloques creados mediante PoS [13]. Pese a estos avances, Peercoin sigue limitado en su uso, y no consigue un mayor rendimiento actual que el esquema de Bitcoin.

Figura 3.5: Comparación de sistemas blockchain [14]

3.4.3. El futuro del PoS con Cardano

Cardano es el proyecto blockchain más riguroso y en el que más estudios se han realizado con relación al PoS. Como ya hemos visto, tanto su esquema de Ouroboros [9], como sus avances Ouro- boros Praos [10] y Ouroboros Genesis [11] constituyen grandes avances en el campo, y su propuesta de desarrollo es concisa.

Pese a esto, el proyecto Cardano se encuentra actualmente en desarrollo, y su prioridad actual está más relacionada con la estabilidad de los contratos inteligentes dentro de la red que con la escalabili- dad.

Es notable también sus avances en la estructura de procesamiento off-chain, con protocolos como Hydra [12].

Desarrollo de un sistema blockchain escalable aplicando PoS 14

(33)

3.4. La actualidad del PoS

Figura 3.6: Roadmap de Cardano [15]

(34)
(35)

4

SigCoin

Sigcoin es una criptodivisa que se vale de una nueva cadena de bloques para la realización de las transacciones. Presenta similitudes en su estructura con Bitcoin y Peercoin, pero ofrece un plantea- miento diferente en cuanto a la expansión de la cadena y al consenso dentro de la misma.

4.1. Bloques dentro de la red

En este apartado es en el que la cadena de bloques de Sigcoin difere de la de Bitcoin principal- mente. Dentro de la cadena de bloques existen tres tipos de bloques claramente diferenciados:

Bloques minados (Mined blocks): Tienen una estructura similar a los bloques de la red Bitcoin.

Bloques frmados (Signed blocks): Estos bloques son parecidos a los bloques minados, pero en vez de utilizar un esquema de Proof of Work se certifcan utilizando Proof of Stake.

Bloques de época (Epoch blocks): Son parecidos a los bloques minados, pero no contienen transacciones y se utilizan para separar épocas dentro de la red.

Estos tres tipos de bloque conforman la cadena de bloques de Sigcoin. Cada bloque tiene unos requerimientos para su creación e incorporación a la red.

4.1.1. Bloques minados

Los bloques minados contienen la siguiente información:

Transacciones: Una lista de transacciones que el bloque certifca

Bloque previo: Hash del bloque anterior

Firma: Realizada por el minero

Nonce: Campo que verifca la validez del PoW relativo al bloque

Timestamp: Marca de tiempo de la creación del bloque

Para que un bloque minado se pueda considerar válido ha de cumplir una serie de restricciones:

Todas las transacciones que certifca han de ser correctas

(36)

SigCoin

La frma del bloque ha de ser válida

El campo Nonce ha de coincidir con la difcultad de minado esperada

La frma del bloque se realiza utilizando ECDSA (Elliptic Curve Digital Signature Algorithm), basado en la criptografía de curvas elípticas, utilizando la curva P521.

Para que el Nonce se considere correcto ha de cumplir que:

H(Block, Nonce) > Diffculty

Donde H es SHA3-512, una función hash criptográfcamente segura [16]. Para el proceso de mi- nado, el minador ha de crear y frmar el bloque, y tras esto ir probando valores aleatorios del Nonce, hasta encontrar uno que satisfaga la desigualdad.

Los bloques minados pueden contener una cantidad arbitraria de transacciones, siempre que esta sea menor al número máximo de transacciones por bloque minado.

4.1.2. Bloques frmados

Los bloques frmados contienen la siguiente información:

Transacciones: Una lista de transacciones que el bloque certifca

Bloque previo: Hash del bloque anterior

Firma: Realizada por el usuario que certifca el bloque

Timestamp: Marca de tiempo de la creación del bloque

Para que un bloque frmado se pueda considerar válido ha de cumplir una serie de restricciones:

Todas las transacciones que certifca han de ser correctas

La frma del bloque ha de ser válida, y estar realizada por el usuario esperado

Los bloques frmados se pueden añadir después de cualquier otro tipo de bloque, y a diferencia de los bloques minados, han de contener exactamente un número determinado de transacciones.

Este tipo de bloques no trabajan bajo las ideas del Proof of Work, sino que lo hacen aplicando Proof of Stake.

Cada bloque determina (independientemente de su tipo), mediante un algoritmo de selección, el usuario que ha de frmar el siguiente bloque, de manera determinista, y en función del valor del hash de ese mismo bloque.

Desarrollo de un sistema blockchain escalable aplicando PoS 18

(37)

4.2. La cadena de bloques

4.1.3. Bloques de época

Los bloques de época contienen la siguiente información:

Bloque previo: Hash del bloque anterior

Firma: Realizada por el certifcador de la época

Nonce: Campo que verifca la validez del PoW relativo al bloque

Timestamp: Marca de tiempo de la creación del bloque

Los bloques de época son parecidos a los bloques minados, pero tienen una mayor difcultad y no contienen transacciones. Estos bloques sirven para dar garantías adicionales a las transacciones incluidas en la cadena. La secuencia de bloques entre dos bloques de época es una época. Cada una de estas épocas ha de contener un número mínimo de bloques frmados y de bloques minados.

Para que un bloque de época se pueda considerar válido ha de cumplir una serie de restricciones:

La época que marca ha de ser correcta (cumple el número mínimo de bloques de cada tipo)

La frma del bloque ha de ser válida

El campo Nonce ha de coincidir con la difcultad de minado esperada

4.2. La cadena de bloques

La cadena de bloques sobre la que opera Sigcoin es, a grandes rasgos, idéntica a la utilizada en Bitcoin. En ella, cada bloque contiene una serie de información y una referencia al bloque anterior en la cadena.

Figura 4.1: Ejemplo de una cadena blockchain

Todos los bloques, exceptuando el bloque inicial, tienen esta referencia. Lo particular de la cadena de bloques de Sigcoin es la presencia de los tres tipos de bloque que conviven dentro de la red. Si diferenciamos a los bloques por su tipo, podríamos entender su estructura como una heterogénera, en la que cada bloque tiene una razón diferente de existir y todos ayudan a aportar funcionalidad.

En esta fgura podemos ver un ejemplo de cadena en Sigcoin. Los bloques minados están repre- sentados por una M, los frmados por una S y los de época por una E.

(38)

SigCoin

Figura 4.2: Cadena de bloques en Sigcoin

4.3. La razón de los bloques frmados

La principal utilidad que aportan los bloques frmados es el hecho de poder añadir transacciones a la red sin necesidad de realizar un costo proceso de computación, como ocurre cuando se utiliza PoW.

Esto permite al protocolo asimilar una cantidad enorme de transacciones, aumentando la cantidad de transacciones por segundo que pueden ser procesadas, y eliminando cualquier límite estricto de rendimiento de la red.

Como ya expuse en la introducción, el problema de un planteamiento de PoS similar a este es el llamado Nothing at Stake. Básicamente, los usuarios no tienen un gran incentivo a frmar bloques de manera única en la rama principal, ya que no pierden excesivos recursos y en caso de que la rama principal cambie esto les podría benefciar. Este es un problema que atañe al consenso dentro de la red, y a la elección de la rama principal.

Este problema es resuelto dentro del protocolo de Sigcoin mediante la inclusión de bloques de época. Aún con esto, la evolución de la cadena de bloques puede ser difusa, y el único límite que existe para la creación de nuevos bloques frmados es la cantidad de transacciones aún por añadir a la red.

4.4. La razón de los bloques de época

Los bloques de época permiten que se alcance un mayor consenso dentro de la red, y juegan un papel fundamental en la elección de la rama principal. Tienen como objetivo aumentar la cantidad de Proof of Work que respalda a una rama.

Como a cada bloque solo le puede seguir un bloque frmado únicamente por un usuario, la conse- cución de bloques frmados no reduce el consenso. Es por esto que la necesidad de aparición de un bloque de época aumenta con la cantidad de bloques minados en esa época.

4.5. Difcultades de minado

Hay dos difcultades de minado diferenciadas dentro de la red de Sigcoin, la difcultad asociada a los bloques minados (que contienen transacciones) y la difcultad de los bloques de época.

Desarrollo de un sistema blockchain escalable aplicando PoS 20

(39)

4.6. Transacciones

4.5.1. Difcultad de bloque minado

La difcultad de minado de un bloque minado es ajustada en cada época para asegurar que la media de tiempo que se tarda en añadir un bloque minado sea de 10 segundos.

Al añadir un bloque de época se calcula la diferencia entre el tiempo que ha tardado en añadirse cada bloque y esos 10 segundos, y se calcula la media, de la siguiente manera:

Cn−1 (MAX − D(n)) = (MAX − D(n − 1))PCn−1 Ti

1 10

DondeMAXes el valor máximo de la función hash,D(n) es la difcultad de minado en la épocan, Cn es la cantidad de bloques en la épocan, yTi es el tiempo que ha tardado en añadirse el bloquei (en segundos).

4.5.2. Difcultad de bloque de época

La difcultad de minado de los bloques de época es ajustada para asegurar que la media de tiempo que dura cada época es de 2 horas.

Para calcular la difcultad de añadir un nuevo bloque de época se tienen en cuenta el tiempo que han tardado en añadirse los últimos 5 bloques de época, y se actualiza la difcultad de la siguiente manera:

(MAX − De(n)) = (MAX − De(n − 1))P5 T5n−i

1 2

DondeMAXes el valor máximo de la función hash,De(n)es la difcultad para el bloque de época que certifca la épocan,Cn es la cantidad de bloques en la épocan, yTi es el tiempo que ha tardado en añadirse el bloque de época que certifca la épocai (en horas).

4.6. Transacciones

Las transacciones en Sigcoin siguen el esquema UTXO. Cada transacción contiene la siguiente información:

Clave pública: La clave pública del usuario que realiza la transacción

Inputs: Lista de transacciones que consume esta transacción

Outputs: Lista de destinatarios de la transacción (clave pública al que se envía la divisa y cantidad enviada)

Firma del usuario

(40)

SigCoin

De esta manera, una misma transacción puede servir para conglomerar el valor de muchas tran- sacciones más pequeñas, o para realizar varios envíos de manera simultánea.

Figura 4.3: Ejemplo de una transacción con tres inputs y dos outputs

Una transacción puede incluir un output marcado como comisión, que cobrará el usuario que in- cluya esta transacción en un bloque. En este caso, también ha de incluir una comisión de época, que cobrará el usuario que incluya un bloque de época que certifque la época en la cuál se encuentra la transacción. La relación entre la comisión normal y la comisión de época es una constante de la red, establecida al 10 %, es decir, toda comisión de época ha de tener al menos un 10 % del valor de la comisión estándar.

Para que una entrada (input) a la transacción sea válida, la transacción referida como input ha de contener una salida (output) para el usuario que certifca la nueva transacción.

Las transacciones en Sigcoin no se pueden considerar del todo seguras (establecidas) hasta que no pertenezcan a una época pasada.

4.7. Incentivos

Existen una variedad de incentivos para cada usuario dentro de la red, que están alineados y permiten que se mantenga el consenso de la cadena de bloques.

4.7.1. Incentivos al minado de bloques minados

El incorporar un bloque minado otorga una serie de recompensas dentro de la red. El rédito obte- nido por el minador al minar un nuevo bloque se calcula de la siguiente manera:

n

Reward: fα(τ ) +X Fi

i=0

Dondeτ es la cantidad de bloques frmados entre el bloque minado añadido y el bloque minado

Desarrollo de un sistema blockchain escalable aplicando PoS 22

(41)

4.7. Incentivos

anterior,n es la cantidad de transacciones añadidas en el nuevo bloque,Fi es la comisión de minado en el bloquei, yfα es la función de recompensa de minado, que está defnida de esta manera:

fα(x) = α x + 3 x

Este valor de α es una constante de la red, que afecta a la creación de nuevas monedas, y en Sigcoin tiene un valor de 5.

Como se puede observar, el minador consigue monedas del protocolo por dos vías:

Comisiones de las transacciones

Nueva moneda creada con el minado

Las comisiones de las transacciones pueden servir para que se otorgue prioridad a ciertas tran- sacciones, pero no generan infación en el protocolo. En el caso de la nueva moneda creada por el minado, esta sí que genera infación, ya que aumenta el tamaño de la masa monetaria que acumula la red. A diferencia de Bitcoin, en Sigcoin no se establece un límite a la cantidad de monedas que pueden llegar a ser creadas mediante este sistema.

La función de recomensa de minadofα(x) busca recomensar el hecho de que exista cierta distan- cia mínima entre los bloques minados, acercándose de manera asintótica al valor deα.

Figura 4.4:fα(x) conα = 5

4.7.2. Incentivos al minado de bloques de época

El incorporar un bloque de época otorga una serie de recompensas dentro de la red. El rédito obtenido por el minador al minar un nuevo bloque de época se calcula de la siguiente manera:

n

Reward: fβ (ϕ) + X F i 0

i=0

Dondeϕes la cantidad de bloques minados en la época,nes la cantidad de transacciones en la época,F i 0 es la comisión de época en el bloquei, yfβ es la función de recompensa de minado, que está defnida de esta manera:

(42)

SigCoin

2 x

fβ(x) = β tanh π 5

Este valor deβ es una constante de la red, que afecta a la creación de nuevas monedas en cada época, y en Sigcoin tiene un valor de 10.

Al igual que ocurre con la inclusión de bloques minados, el minador de un bloque de época consigue monedas del protocolo por dos vías, comisiones de las transacciones y la nueva moneda creada al inicio de la época

Las comisiones de época son simplemente una pequeña fracción de todas las comisiones que se han pagado en la época, pero al sumar todas esta recomensa por la creación de un bloque de época es sustancialmente más grande que la de creación de un bloque minado.

La función de recomensa de minadofβ (x)busca recomensar el hecho de que exista una cantidad grande de bloques minados dentro de la época, acercándose de manera asintótica al valor deβ. Esto es debido a que la necesidad de aparición de un bloque de época es proporcional a la cantidad de bloques minados en la época, y no tanto a la cantidad de bloques frmados.

Figura 4.5:fβ (x) conβ = 10

4.7.3. Incentivos al frmado

A la hora incorporar a la red un bloque frmado, el usuario que lo certifca recibe la siguiente reco- mensa:

n

Reward: X Fi

i=0

Donden es la cantidad de transacciones en el bloque yFi es la comisión de la transaccióni del bloque.

A diferencia de los bloques que requieren Proof of Work, en el caso de los bloques frmados el certifcador únicamente se ve recompensado por las transacciones que incorpora en el bloque, y por lo tanto la inclusión de bloques frmados no supone una alteración de la masa monetaria.

Desarrollo de un sistema blockchain escalable aplicando PoS 24

(43)

4.8. Algoritmo de seleccion´ del firmador

4.8. Algoritmo de selección del frmador

En Sigcoin después de cada bloque se puede añadir un bloque frmado. Este bloque ha de ser frmado por un usuario (clave pública) fjado y determinado en función del hash derivado del bloque anterior.

La implementación de esta función hash derivada varía con cada tipo de bloque. Para los bloques que requieren de Proof of Work para incluirse dentro de la red (bloques minados y de época), la función hash derivada es equivalente a la función hash del bloque. Pero para los bloques frmados, esta función hash derivada no tiene en cuenta la información que puede ser modifcada por el usuario a la hora de crear el bloque, simplemente se calcula utilizando el hash del bloque previo y la clave pública del frmador.

Esta función hash derivada sirve como semilla inicial pseudoaleatoria a partir de la cual se elige al siguiente frmador. Para realizar esto, inicialmente se recogen todos los outputs de transacciones de todas las épocas pasadas que no hayan sido gastados aún, junto con la edad de la transacción.

La edad de una transacción, en este contexto, es la cantidad de épocas que han pasado desde su realización.

Una vez se dispone de todos estos outputs y su edad, se calcula su valor, dado por la siguiente función:

v(ρ, λ) = bρλ2 c

Dondeρ es la cantidad monetaria del output y λ es su edad. Con todos estos valores se elabora una tabla, en la que se almacenan de manera secuencial todos los outputs con su valor:

Figura 4.6: Tabla de outputs fnal

El tamaño que cada output ocupa en esta tabla fcticia es proporcional a su valor.

Para elegir el output ganador se calcula su posición,P, en función del hash derivado del bloque:

n

P = H0%X v(ρi, λi)

i=1

DondeH0 es el hash derivado del bloque anterior,n es la cantidad de outputs totales considerados, ρi es la cantidad monetaria del outputiyλi es la edad del outputi.

(44)

SigCoin

4.9. Selección de la cadena principal

Para la elección de la cadena principal se ponderan dos factores:

1.– Cantidad de épocas 2.– Monedas creadas

Por defnición, la cadena principal es la que más bloques de época posee. Son estos bloques los que se utilizan para facilitar el consenso, y también suponen una cantidad de Proof of Work dedicada a la cadena.

En caso de empate en el número de épocas en dos cadenas diferentes, se prioriza aquella cadena en la cual se han creado más monedas totales. Esto no solo se ve afectado por la cantidad de recursos dedicados a cada cadena, si no que también infuye cómo se ha distribuido esa computación.

Como ya se vió en el apartado de incentivos, la cantidad de monedas creadas tiene que ver con el reparto de los bloques en la red. Pongamos el ejemplo de dos fragmentos de cadenas, en los cuales aparecen 10 bloques frmados (S) y 2 bloques minados (M):

Figura 4.7: Blockchain de ejemplo 1

Figura 4.8: Blockchain de ejemplo 2

En la primera cadena cada bloque minado deja atrás 5 bloques frmados, mientras que en la se- gunda el primer bloque minado deja atrás 8 y el segundo 2. Las monedas creadas en cada ejemplo son:

1.– 2 ∗ (5 ∗5 8) = 6,25 2.– (5 ∗11 8 ) + (5 ∗2 5) = 5.63

Como podemos ver, pese a que ambas cadenas pueden representar en última instancia la misma información, la distribución de los bloques afecta a la creación de monedas, y por lo tanto a la elección de la cadena principal.

Algo que también afecta al concepto de la cadena principal es la existencia de los bloques frmados que utilizan Proof of Stake. Para los usuarios que simplemente certifquen este tipo de bloques, el concepto de cadena principal tampoco les infuye mucho, pues al no tener que dedicar ningún tipo de recurso a la creación de estos bloques, no se ven perjudicados por incorporar bloques a cadenas que no sean la principal. Por este comportamiento, es esperable que la mayoría de cadenas contengan

Desarrollo de un sistema blockchain escalable aplicando PoS 26

(45)

4.9. Seleccion´ de la cadena principal

todas las transacciones realizadas en el protocolo.

(46)
(47)

5

alisis del protocolo SigCoin An´

En esta sección realizaré un análisis sobre diferentes aspectos del protocolo Sigcoin y sus implica- ciones.

5.1. Coste computacional del algoritmo de selección del frmador

Una parte importante del protocolo Sigcoin, en cuestión al rendimiento, es el coste computacional del algoritmo de selección del frmador. Inicialmente necesita conocer los outputs de transacciones no gastados, lo cual tiene un coste deO(n), siendon la cantidad de transacciones. Por suerte, este cálculo puede ser utilizado en un futuro, y no tiene por qué realizarse en cada iteración del algoritmo.

Ocurre lo mismo con el cálculo del valor de los outputs, el cuál únicamente cambia cuando se añade un bloque de época, por lo que para cada época estos cálculos se mantienen constantes.

Una vez se dispone de la lista de outputs sin gastar de épocas pasadas con su valor, se ha de calcular el hash derivado del bloque previo. Esta operación se realiza aplicando SHA3-512, y no resulta costosa en términos de tiempo ni memoria, aunque resulta más rápida en bloques frmados, al no tener en cuenta las transacciones que contiene el bloque.

Con este valor y la lista, únicamente falta encontrar el valor de la lista que ocupa la posición busca- da. Esto se puede lograr, mediante una búsqueda binaria, enO(lg n), siendo n la cantidad de outputs considerados en la lista.

5.2. Ataques en Sigcoin

Existen una variedad de ataques que pueden realizarse dentro del protocolo. En este contexto entendemos ataque como cualquier acción dentro de la red que pueda comprometer la estabilidad de la cadena de bloques, o que busca benefciar a un grupo minoritario de usuarios perjudicando a la mayoría.

(48)

alisis del protocolo SigCoin An´

5.2.1. Block designing

El diseño de bloques es un ataque único para Sigcoin. Este ataque se basa en la creación de bloques de época o minados diseñados específcamente para tratar de alterar los siguientes frmadores de bloques. El principal objetivo del atacante es que la función hash derivada del bloque que añade le garantice que uno de los siguientes frmadores sea él.

Para lograr esto, el atacante primero ha de conseguir crear un bloque de época o minado válido.

Una vez que dispone de este bloque, y antes de hacerlo público, puede ejecutar el algoritmo de selec- ción del siguiente frmador de manera repetida para encontrar los siguientes frmadores de bloques a partir de este. Con esta información puede decidir si publicar el bloque e incorporarlo a la red o tratar de componer otro bloque. Como la función hash utilizada para calcular el hash derivado del bloque es criptográfcamente segura, el minador no tiene manera de garantizar que los siguientes frmado- res sean los que él desea, y únicamente puede decidir componer otro bloque diferente que cumpla la restricción de la difcultad, y cuyos siguientes frmadores le convengan más.

Si un atacante dispone del 1 % del stake dentro de la red, la probabilidad de que el nuevo bloque le indique como siguiente frmador es de un 1 %. A no ser que el atacante posea una parte muy signifcativa del stake dentro de la red, este ataque no le benefcia, ya que no únicamente le supone dedicar una gran cantidad de recursos en el Proof of Work, sino que además ha de rechazar los benefcios que añadir bloques de manera honesta le podrían otorgar.

La probabilidad de que un bloque PoW dado indique que los siguientesx frmadores son el mismo decrece de manera exponencial con el valor dex, y en base a la cantidad de Stake que tenga ese usuario dentro de la red.

Figura 5.1: Probabilidades de que los siguientesxfrmadores sean el mismo, suponiendo un stake dentro de la red del 50 % (verde), 40 % (azul), 30 % (rojo), 20 % (naranja) y 10 % (morado)

Como podemos observar, aún disponiendo de un stake muy signifcativo, las probabilidades de los siguientes bloques tengan a un mismo usuario como frmador es muy baja.

Desarrollo de un sistema blockchain escalable aplicando PoS 30

(49)

5.3. Uso de SHA3

5.2.2. Double Spend

Este tipo de ataque consiste en intentar gastar dos o más veces una misma criptodivisa. En la introducción ya hice una explicación de las bases del ataque, y lo que supone en una red como Bitcoin.

Para Sigcoin, los limitantes y el funcionamiento del ataque es algo diferente.

Los pasos para llevar a cabo este ataque en Sigcoin son los siguientes:

1.– Conseguir que una transacción de A a B se incluya en un bloque. En este momento B poseerá la cantidad de criptomoneda que A quería gastar

2.– Crear una ramifcación de la cadena de bloques que no contenga la transacción de A a B 3.– Añadir una transacción de A a C en esta nueva ramifcación

4.– Lograr que la nueva ramifcación sea la rama principal

Los tres primeros puntos no necesitan ningún tipo de recurso especial para su realización. El limi- tante es principalmente el cuarto punto. Lograr que una rama privada llegue a ser la rama principal es signifcativamente más complejo en Sigcoin. Para ello hay dos aspectos diferentes que un atacante debe considerar, la creación de bloques de época y la creación de moneda.

Para la creación de nuevos bloques de época no solo se necesita una capacidad computacional importante con respecto al resto de la red, sino que además cada época necesita un número míni- mo de bloques minados y frmados. La creación de bloques minados también necesita de capacidad computacional, pero la creación de bloques frmados necesita de la propiedad de moneda dentro del protocolo. Además de la propiedad de moneda, en caso de que el atacante trate de crear una época de manera privada para luego publicarla, la cantidad de computación que ha de realizar aumenta de manera muy considerable. Esto se debe al diseño de bloque que ha de realizar, mediante el ataque expuesto en la sección anterior.

5.3. Uso de SHA3

La función hash criptográfca que se emplea en Sigcoin es SHA3-512. Esto tiene diversas razones.

SHA3 se diseñó como una función hash que no basase su robustez en los mismos principios en los que lo hace SHA2. De esta manera, en caso de que se descubriese alguna vulnerabilidad en el algoritmo de SHA2, esta muy probablemente no afectaría a SHA3.

Además de esto, SHA3 es una función que tiene un rendimiento signifcativamente peor que SHA2 en CPUs o GPUs tradicionales, pero que por su estructura permite una implementación en circuitos integrados para aplicaciones específcas, ASICs, de dos a tres veces más efciente que SHA2 [17].

Esto crea una separación aún más grande y clara entre nodos minadores, con una gran capacidad de cómputo, y nodos frmadores, que redundan la información y frman bloques.

(50)
(51)

6

Pruebas y rendimiento

Todas estas pruebas se han realizado en un único ordenador, simulando la totalidad de la red Sigcoin. Factores como la falta de consenso o la latencia dentro de la red pueden afectar negativa- mente al rendimiento de la misma, pero otros como la distribución de la computación o el hardware especializado pueden mejorarlo en gran medida.

Por las características de la cadena de bloques de Sigcoin, la mayoría de estas pruebas nos llevan a resultados limitados por la capacidad de cómputo actual y no tanto por el diseño de la red.

6.1. Máximo throughput sostenido

Esta prueba representa la máxima cantidad de transacciones por segundo que pueden ser incor- poradas a la red. Esto se logra cuando la totalidad de las transacciones son añadidas a la cadena mediante bloques frmados, y los limitantes a la velocidad son la capacidad de cómputo en cuanto a funciones hash de bloques, frmas criptográfcas y selección del siguiente frmador.

En la prueba se añaden bloques a una nueva época con transacciones generadas aleatoriamente de manera previa.

Las transacciones por segundo que se consiguen se mantienen constantes y alrededor de 17500.

Parte de las bajadas momentáneas de rendimiento se deben a las implementaciones de las estructuras de datos en Python. Con una implementación más efciente y específca para Sigcoin este valor debería ser prácticamente constante.

6.2. Throughput en un desarrollo ideal

Esta prueba representa un desarrollo ideal de la cadena de bloques. En este construcción de la cadena, se encuentran tanto bloques minados como bloques frmados, y hay entre 4 y 8 bloques frmados entre cada bloque minado. Las transacciones añadidas son generadas aleatoriamente.

(52)

Pruebas y rendimiento

Figura 6.1: Máximas transacciones por segundo

Figura 6.2: Transacciones por segundo en un desarrollo ideal de la cadena

Desarrollo de un sistema blockchain escalable aplicando PoS 34

(53)

6.3. Throughput en un entorno realista

Las transacciones por segundo que se consiguen varían más, debido al tiempo que se necesita para minar los bloques. Esta prueba se puede considerar como un mínimo de rendimiento de la red, que se puede mantener en los momentos en los que no exista una gran demanda de nuevas transac- ciones.

6.3. Throughput en un entorno realista

Esta prueba representa un desarrollo realista de la cadena de bloques. Para realizarla, se somete a la red a una cantidad variable de transacciones nuevas cada minuto.

Figura 6.3: Evolución realista de la cadena

Durante el desarrollo de la prueba podemos observar que, para un número de transacciones por minuto menores a un millón, la red se adapta bien, pudiendo añadir todas estas transacciones en el mismo minuto en el que se publican. Cuando las nuevas transacciones llegan a los dos millones por minuto la red se satura, llegando a su throughput máximo, y la cantidad de transacciones acumuladas sube. Cuando se termina el pico de transacciones, y estas bajan a 50000 transacciones nuevas por minuto, la red logra terminar por certifcar todas las transacciones que tenía acumuladas.

(54)
(55)

7

Conclusiones

El protocolo de Sigcoin cumple con todos los requisitos establecidos en la motivación:

Lograr dar soporte a una cantidad arbitrariamente grande de transacciones por segundo

Aprovechar la capacidad de cómputo de la red para aumentar la certifcación de transacciones

Construir un protocolo escalable

Lograr todo lo anterior manteniendo las bondades de criptomonedas como el Bitcoin (descentralización, seguri- dad y confanza)

Esto evidencia las limitaciones de criptomonedas como el Bitcoin, y los benefcios que pueden aportar esquemas como los del Proof of Stake. A su vez, también surgen diversos problemas, y es en la manera de tratar de resolverlos en la que se constituyen los fundamentos de Sigcoin. De diferentes técnicas utilizadas en el protocolo se pueden extraer ideas útiles aplicables a las cadenas de bloques y a sistemas distribuidos en general.

Creo que la idea más valiosa que puede aportar Sigcoin concierne a la visión de la cadena de bloques. Podemos pensar en la cadena de Bitcoin como una gran Pirámide, monolítica, únicamente compuesta de bloques de piedra transportados por esclavos cuyas diferencias se veían eclipsadas por la magnitud del fruto de su trabajo. En este respecto, la cadena de bloques de Sigcoin se asemejaría a una aldea en constante expansión, en la que existen una variedad de construcciones, huertas y caminos heterogéneos cuyo valor radica en la cohesión entre ellos, y logran esta cohesión gracias a la visión de unidad compartida entre todos sus habitantes.

(56)
(57)

8

Trabajo futuro

El campo del blockchain es aún vasto. Proyectos como los de Cardano o Ethereum tratan de innovar con cierto éxito en los ámbitos sobre los que trata este trabajo, pero no han llegado a desarrollar un sistema totalmente escalable.

El punto principal del aumento de la escalabilidad dentro de la cadena de bloques creo que ha de pasar por la distribución de la misma. En las nociones actuales del blockchain se idealiza una cadena única, sobre la cual recae todo el peso computacional. Propuestas como Hydra [12] pueden cambiar la manera en la que vemos esa computación, y quizá reestructuren todas estas cadenas para bien.

(58)
(59)

Bibliograf´ia

[1] “Paypal support for cryptocurrencies.” https://www.paypal.com/us/webapps/mpp/

crypto. Accedido el 26/5/2021.

[2] S. Nakamoto, “Bitcoin: A peer-to-peer electronic cash system,” https://bitcoin.org/

bitcoin.pdf.

[3] Croman and Kyle, “On scaling decentralized blockchains,”https://www.comp.nus.edu.sg/

~prateeks/papers/Bitcoin-scaling.pdf.

[4] “Visa expands global transaction processing with facilities in singapore and united kingdom,”

[5] “Estimación del consumo eléctrico de la red bitcoin.” https://cbeci.org/cbeci/

comparisons. Accedido el 15/4/2021.

[6] D. Bank, “The future of payments: Series 2 part iii. bitcoins: Can the tinkerbell effect become a self-fulflling prophecy?,”

[7] V. Buterin, “Ethereum: A next-generation smart contract and decentralized application platform,”

https://ethereum.org/en/whitepaper/.

[8] Y. Sompolinsky and A. Zohar, “Secure high-rate transaction processing in bitcoin,” https://

eprint.iacr.org/2013/881.pdf.

[9] A. Kiayias and A. Russell, “Ouroboros: A provably secure proof-of-stake blockchain protocol,”

https://eprint.iacr.org/2016/889.pdf.

[10] B. David and P. Gaˇzi, “Ouroboros praos: An adaptively-secure, semi-synchronous proof-of-stake blockchain,” https://eprint.iacr.org/2017/573.pdf.

[11] C. Badertscher and P. Gaˇzi, “Ouroboros genesis: Composable proof-of-stake blockchains with dynamic availability,” https://eprint.iacr.org/2018/378.pdf.

[12] M. M. T. Chakravarty and S. Coretti, “Hydra: Fast isomorphic state channels,”https://eprint.

iacr.org/2020/299.pdf.

[13] S. King and S. Nadal, “Ppcoin: Peer-to-peer crypto-currency with proof-of-stake,”https://www.

peercoin.net/whitepapers/peercoin-paper.pdf.

[14] S. King and S. Nadal, “Ppcoin documentation,” https://docs.peercoin.net/.

[15] “Cardano roadmap.” https://roadmap.cardano.org/en/goguen/. Accedido el 23/4/2021.

[16] U. N. I. of Standards and Technology, “Sha-3 standard: Permutation-based hash and extendable- output functions,” http://dx.doi.org/10.6028/NIST.FIPS.202.

(60)

Bibliograf´ia

42 Desarrollo de un sistema blockchain escalable aplicando PoS

(61)
(62)

Referencias

Documento similar

In addition to the requirements set out in Chapter VII MDR, also other MDR requirements should apply to ‘legacy devices’, provided that those requirements

The notified body that issued the AIMDD or MDD certificate may confirm in writing (after having reviewed manufacturer’s description of the (proposed) change) that the

Para ello, trabajaremos con una colección de cartas redactadas desde allí, impresa en Évora en 1598 y otros documentos jesuitas: el Sumario de las cosas de Japón (1583),

Entre nosotros anda un escritor de cosas de filología, paisano de Costa, que no deja de tener ingenio y garbo; pero cuyas obras tienen de todo menos de ciencia, y aun

E Clamades andaua sienpre sobre el caua- 11o de madera, y en poco tienpo fue tan lexos, que el no sabia en donde estaña; pero el tomo muy gran esfuergo en si, y pensó yendo assi

diabetes, chronic respiratory disease and cancer) targeted in the Global Action Plan on NCDs as well as other noncommunicable conditions of particular concern in the European

d) que haya «identidad de órgano» (con identidad de Sala y Sección); e) que haya alteridad, es decir, que las sentencias aportadas sean de persona distinta a la recurrente, e) que

Las manifestaciones musicales y su organización institucional a lo largo de los siglos XVI al XVIII son aspectos poco conocidos de la cultura alicantina. Analizar el alcance y