La Historia de la Prueba de Participación Delegada (DPOS)

in #cryptocurrency4 years ago (edited)

Este artículo es una traducción realizada voluntariamente por mí @flaws. Algunos usuarios hispanos me pidieron traducir la publicación debido a la información de utilidad aquí expuesta y decidí hacer el trabajo voluntariamente. Espero que esta información sea de su agrado. Puedes leer el artículo original aquí| This article is a translation made voluntarily by me @flaws. Some Spanish users asked me to translate the publication because of the useful information here and I decided to do the work voluntarily. I hope this information is to your liking. You can read the original article here

DPOS (también conocida como Delegated Proof-of-Stake, Prueba de Participación Delegada) fue inventada por Daniel Larimer para el algoritmo de consenso Proof-of-Work (Prueba de trabajo) usado por Bitcoin y la mayoría de criptomonedas en ese momento. Todas las cadenas de bloques desarrolladas por Dan (incluyendo Bitshares, Steem, y EOS) usan DPOS para seleccionar sus productores de bloques.

En este post voy a discutir la historia que llevó a la invención del DPOS. Trabajé estrechamente en el momento de su invención, y así es como sucedió, según recuerdo.

Antes de entrar en detalle de la historia del DPOS, sin embargo, necesitaré repasar algún material de fondo sobre cómo los bloques se añaden a una red de cadena de bloques.

Solicitar transacciones (por ejemplo, una transferencia de dinero) en una red de cadenas de bloques

Una de las funciones más importantes de una red de cadenas de bloques es crear una lista de transacciones ordenadas en el tiempo, con grupos de estas transacciones almacenadas en una secuencia de bloques enlazados llamada cadena de bloques. Este orden temporal es importante, porque evita que alguien gaste sus criptomonedas más de una vez (un ataque conocido como "doble gasto").

Para poder procesar nuevas transacciones, una de las computadoras de la red de la cadena de bloques necesita decidir una solicitud válida para las nuevas transacciones que ha recibido, ponerlas en un bloque y luego transmitir ese bloque a todas las demás computadoras de la red de cadena de bloques. Las demás computadoras de la red de cadena de bloques pueden entonces verificar ese bloque, y si pasa las reglas de la red de la cadena de bloques, lo agregan a su copia local de la cadena de bloques. Luego, después de un cierto tiempo de demora (a menudo denominado intervalo de bloque), otro equipo repetirá los pasos anteriores y se agregará otro bloque a la cadena de bloques.

Problemas con una red de cadenas de bloques que utiliza una sola computadora para generar todos los bloques

En teoría, las reglas de una cadena de bloques podrían asignar un solo ordenador en la red que genere todos los bloques. Pero hay varios problemas con esta idea.

En primer lugar, constituye una red muy frágil: si esa computadora se bloquea o pierde la conexión a internet, no se podrán procesar las transacciones de nadie mientras esa computadora no pueda comunicarse con las demás computadoras de la red (en otras palabras, nadie podrá hacer transferencias de dinero).

Otro problema es que una sola computadora que hace todos los bloques puede bloquear todas las transferencias de quien quiera, "congelando" efectivamente el dinero almacenado en una cuenta. Esto se debe a que la computadora que hace un bloque puede elegir qué transacciones pone en un bloque. Si no quiere incluir una transacción, puede fingir que nunca la vio. Sin embargo, incluso este ordenador sólo puede congelar fondos, no puede realmente robarlos (porque sólo puede bloquear transacciones, no puede hacer una transacción falsa que mueva dinero de una cuenta que no posee, porque eso va contra las reglas de la cadena de bloques).

¿De quién es el ordenador que hace el siguiente bloque en la cadena de bloques?

Pero la capacidad de congelar fondos de forma arbitraria en la red es muy poderosa y tampoco se quiere que la red financiera dependa de la salud de un ordenador, por lo que Bitcoin, la primera criptomoneda, se diseñó con una característica llamada "minería" que permite a los ordenadores de la red competir por el derecho a generar el siguiente bloque en la cadena de bloques.

Cómo funciona la minería de Bitcoin (también conocida como "Prueba de Trabajo" o POW para abreviar)

Con la "minería", cada computadora que compite por el derecho de hacer el siguiente bloque (un minero) compite contra las otras computadoras para encontrar una solución de fuerza bruta a un problema de matemáticas. Debido a que las computadoras deben resolver este problema matemático y demostrar que tienen la solución correcta, las criptomonedas basadas en la minería también se conocen como criptomonedas de "prueba de trabajo" (POW).

En general, los mineros con las computadoras más rápidas serán los primeros en encontrar la solución, y luego emitirán un bloque a la red de cadenas de bloques que incluya su solución. Si los otros ordenadores de la red están de acuerdo en que la solución es correcta, este se convierte en el siguiente bloque de la cadena.

Al principio, la minería era aparentemente una gran solución al problema de seleccionar quién produciría el siguiente bloque. Cualquier minero de la red podía producir el siguiente bloque, así que incluso si un minero decidía no incluir las transacciones de un usuario, las transacciones probablemente serían incluidas por el siguiente minero. Así que en el peor de los casos, las transacciones de un usuario podrían retrasarse unos cuantos bloques.

Pasos que conducen a la invención de la Prueba de Participación Delegada (DPOS)

En 2013, trabajé con Dan Larimer para crear una nueva criptomoned llamada BitShares. BitShares se estaba diseñando como un intercambio descentralizado basado en cadenas de bloques (es decir, un lugar en el que los usuarios podían realizar intercambios entre pares de criptomonedas y otros productos básicos). Mi equipo trabajaba principalmente en el código de red entre pares y en la cartera de la línea de comandos, y el equipo de Dan trabajaba en el código de la cadena de bloques, incluido el método para determinar qué computadora de la red llega a hacer el siguiente bloque. A pesar de la separación del trabajo, quizás no sea sorprendente que a menudo discutiéramos ideas de implementación, y a veces personas de mi equipo ayudaban en el lado de la cadena de bloques cuando había un problema.

¿Por qué no usar la Prueba de Trabajo probada y verdadera?

La prueba de trabajo consumía muchos recursos informáticos (por lo que la cadena de bloques tenía que pagar mucho a los mineros) y era relativamente lenta para nuestras necesidades como plataforma comercial. La red Bitcoin tenía un tiempo de creación de bloque de 10 minutos y nuestro objetivo era un tiempo de creación de bloque de 10s (finalmente fijamos el tiempo de creación de bloque en 3s). Así que Dan descartó el uso de pruebas de trabajo para seleccionar al siguiente productor de bloques.

¿Un solo productor de bloques? Un solo punto de fracaso y demasiada confianza

Para obtener la mayor velocidad, la primera idea de Dan fue la de un solo productor de bloques. Esto en realidad tiene algunas ventajas de rendimiento, porque todo el mundo podría enviar sus transacciones a ese productor de bloques, lo que permite que las transacciones se incluyan en un bloque más rápido. Pero tener un solo punto de fallo hacía que esto pareciera inviable y realmente estás poniendo mucho poder en las manos de una persona.

¿Qué hay de un grupo de "fideicomisarios"? Todavía requiere demasiada confianza

La siguiente idea de Dan fue tener un conjunto de fideicomisarios: personas de confianza en la recién nacida comunidad BitShares que serían asignados a producir bloques en orden de round robin. La idea era que aunque un fideicomisario no incluyera una transacción, el siguiente sí lo haría. Así que la única manera de bloquear una transacción era si todos los fideicomisarios decidían bloquear la transacción. Uno de los grandes atractivos de esta idea era su total simplicidad, lo que significaba que podía ser codificada muy rápidamente, y estábamos bajo una seria presión de tiempo para conseguir una red de cadenas de bloques funcional que funcionara antes de que se agotaran los fondos.

Si bien la idea de los fideicomisarios era muy factible desde el punto de vista técnico y muy atractiva por su fácil aplicación, también era algo frágil en el sentido de que dependía de un conjunto fijo de computadoras en la red y no disponía de ningún mecanismo para modificar esa lista de usuarios a lo largo del tiempo, excepto trabajando arduamente en un nuevo conjunto de fideicomisarios.

También depositó mucha confianza en los fideicomisarios, y los criptoanarquistas generalmente no quieren depositar demasiada confianza en nadie. Así que yo y otros argumentamos que requería demasiada confianza, y no sería aceptable por la comunidad de criptomonedas. Después de un día más o menos, Dan admitió el punto y fue a buscar un nuevo método para seleccionar rápidamente el siguiente productor de bloques.

Prueba de Participación (POS): una forma alternativa de seleccionar el siguiente productor de bloques basado en la posesión de monedas

Dan luego comenzó a buscar sistemas de prueba de participación. La prueba de participación (POS) era el nuevo método de selección de productores de bloques en ese momento y las implementaciones más conocidas eran Peercoin y NXT. NXT era de particular interés, porque también se estaba diseñando para apoyar un intercambio descentralizado similar al de BitShares.

Los algoritmos de consenso de prueba de participación seleccionan el siguiente productor de bloques basándose en una combinación de la cantidad de monedas que tiene un productor de bloques, el tiempo que ha conservado las monedas (un factor denominado "edad de la moneda"), junto con cierta aleatoriedad.

Probablemente la idea más interesante sobre los algoritmos de consenso POS era que se basaban en el interés propio de los productores de bloques para evitar que se colusionaran para bloquear las transacciones. La idea es simple: mediante el diseño de cadenas de bloques basadas en POS, los productores de bloques tienen una gran parte proporcional de las monedas. El valor de esas monedas es apoyado por personas que están dispuestas a aceptar esas monedas para otros bienes. Y si los usuarios deciden que los productores de bloques pueden dejar de procesar sus transacciones individuales, es probable que las monedas pierdan valor, por lo que los productores de bloques se ven incentivados a procesar las transacciones de otros usuarios en el caso general.

Honestamente no recuerdo por qué Dan eligió no implementar un algoritmo de consenso POS. Tenía sus detractores, incluyendo las afirmaciones de que estaba sujeto a los ataques de "nothing-at-stake". Tengo un vago recuerdo de la época en que estaba leyendo el algoritmo POS para NXT que parecía bastante complicado (por ejemplo, el uso de la aleatorización en el proceso de selección de productores de bloques suena un poco desordenado y el cálculo de la edad de la moneda habría añadido complejidad computacional), y sospecho que esto pesó mucho en su decisión de evitar la implementación de un algoritmo de consenso POS, especialmente dada la presión del tiempo para conseguir que un algoritmo de consenso funcional funcionara rápidamente con una financiación limitada.

La invención de la Prueba de Participación Delegada

Pero Dan siempre ha sido un fuerte defensor del análisis económico, especialmente cuando se trata del diseño de cadenas de bloques, y creo que este fue su principal atractivo para los sistemas de prueba de participación.

Sin embargo, al mismo tiempo también le gustó la simplicidad de diseño del modelo de fideicomisario discutido anteriormente (fácil de implementar, producción de bloques predecibles, funciona muy bien siempre que se pueda confiar en los fideicomisarios).

Así que la DPOS era esencialmente una síntesis de estas dos ideas, combinada con un giro: en lugar de que los grandes accionistas produjeran directamente los bloques, los accionistas elegirían a los productores de los bloques para fabricarlos. Aquí los productores de bloques cumplen un papel similar al de los fideicomisarios en su plan original para el algoritmo de consenso. Pero bajo el DPOS, no se necesita confiar tanto en ellos y el sistema tiene un mecanismo definido de cómo se eligen y reemplazan los fideicomisarios, que no requiere de mucho trabajo para reemplazarlos.

Una nota final sobre la "congelación de fondos" en una cadena de bloques

Siempre me sorprende cómo los hombres de negocios que actúan como "líderes de pensamiento" e "influyentes" a menudo no entienden los fundamentos de la revolución tecnológica que pretenden liderar.

Una cosa que me inspiró a escribir este post fue un reciente tweet de Changpeng Zhao, el CEO de Binance, alias CZ Binance en twitter, que me hizo reír. CZ dijo: "Las cadenas de bloques NO deberían tener características de congelación".

CZ estaba aparentemente molesto de que la cadena de bloques de Steem pudiera congelar los fondos de una cuenta y pensó que era una característica especial de una cadena de bloques basada en DPOS. Sin embargo, como espero que hayan aprendido de este post, cada red de cadenas de bloques existente, incluyendo la red Bitcoin, puede congelar los fondos de una cuenta, siempre y cuando todos los productores de bloques de esa red estén de acuerdo en hacerlo. Todo lo que tienen que hacer es acordar no incluir las transacciones en sus bloques.

Nótese que esto no es realmente una "característica" de la tecnología de cadenas de bloques, en el sentido de que los desarrolladores de cadenas de bloques no todos conspiraron para diseñar sus cadenas de bloques para trabajar de esta manera. Es mayormente una limitación de la tecnología, al menos hasta donde hemos podido diseñar cadenas de bloques hasta ahora.

Cuanto menor sea el número de productores de bloques en una cadena de bloques, más fácil será lograr la coordinación necesaria para congelar los fondos de una cuenta. Esto significa, por ejemplo, que las principales piscinas de mineros de bitcoin podrían probablemente congelar los fondos de una cuenta durante mucho tiempo, suponiendo que decidieran que tenía sentido. Pero generalmente se asume que esto no sucederá, porque se les paga en Bitcoin y la congelación arbitraria de los fondos de alguien generalmente no va a ser vista favorablemente por las personas que apoyan el valor de Bitcoin.

Por lo tanto, la economía de una cadena de bloques tiene que ser diseñada de tal manera que desaliente a los productores de bloques de la cadena de congelar una cuenta sin una buena razón. Probablemente hablaré de algunas formas de hacer esto en mi próximo post.

Más por venir

Como se ha mencionado anteriormente, escribí este post principalmente para sentar las bases de mi próximo post, que analizará la economía y la filosofía de la DPOS, explorará sus ventajas y debilidades, y las ideas para mejorarla. Desafortunadamente, estoy bastante ocupado últimamente, así que puede que tarde un tiempo en escribir el post de seguimiento sobre este tema. Estoy publicando este ahora, ya que fue escrito en su mayoría cuando escribí mis posts anteriores, y terminarlo hoy fue una buena manera de relajarme y enfocar mis pensamientos.

Sort:  

Gracias por la traducción voluntaria @flaws.
Saludos

¡No es nada! Gracias por pasarse <3

Buen trabajo @flaws . Recuerda que siempre conviene por referencia y es de buena practica, agregar el enlace al articulo original sobre el cual se basa la traduccion. En este caso lo hago por ti:

The History of Delegated Proof-of-Stake (DPOS) by @blocktrades

saludos!

¡Gracias por recordarmelo @traducciones! No lo recordaba, ya lo adjunté al post <3

 4 years ago  Reveal Comment
 4 years ago  Reveal Comment