Resumen: Delegación e incentivos del PoS (Proof of Stake - Prueba de Participación) (Lars Brunjes). Traducción al español 🇪🇸

Video Original publicado el 14 de Mayo de 2018 :

El Dr. Lars Brünjes, Director de Educación del IOHK, estuvo recientemente en Hamburgo en una reunión de Blockchain Mania donde dió una charla técnica sobre los incentivos de Cardano. A continuación encontrará un resumen de esta charla.

Aunque está involucrado en los esfuerzos educativos de IOHK, tales como cursos de Haskell y capacitación interna/externa. También dirige la corriente de trabajo de “incentivos” en Cardano, trabajando junto con el profesor Kiayias, el profesor Koutsoupias y Aikaterini.

¿Cuál es el Punto de Incentivos?

En blockchain, el objetivo es incentivar a los participantes para que “hagan lo correcto”. Con Cardano, eso significa lograr una cierta distribución de la participación. Esta distribución debe lograrse con agrupaciones de participantes (stake pools) , en los que no queremos demasiados ni tampoco demasiados pocos. La mayor parte de las inversiones se concentrarán en las agrupaciones de participantes (stake pools) y estas agrupaciones (stake pools) estarán en línea y participarán activamente en el protocolo.

Los incentivos deben establecerse de tal manera que si cada uno sigue su propio interés financiero racional, el resultado sea una buena distribución de la participación.

¿Qué son los incentivos?

Los incentivos en el contexto de una criptomoneda son formas de animar a la gente a participar en el protocolo y a seguirlo fielmente.

En el caso de Bitcoin, esto significa minar bloques e incorporar tantas transacciones válidas en esos bloques como sea posible.

En Cardano, significa estar en línea y crear un bloque cuando han sido elegidos como líderes de franja (slot leader) y participar en el proceso electoral.

La participación en el protocolo Cardano tiene un coste de cálculo mucho menor que la participación en Bitcoin. Sin embargo, tener a los líderes en línea cuando les toca a ellos es importante tanto para la seguridad como para la eficiencia. Y para estos líderes de franja (slot leader), hay alguna inversión (en forma de hardware, tiempo, etc.) así que es justo que se les reembolse por el problema.

En nuestro caso, los incentivos se refieren a incentivos monetarios en forma de ADA.

Sin embargo, cabe señalar que existen otros tipos de incentivos, como por ejemplo:

  • Idealismo
  • Moral
  • Deseo general de “hacer lo correcto”.

Por ejemplo, cuando la agrupacion minera (mining pool) de Bitcoin Ghash acumuló el 42% de la potencia minera total, la gente empezó a abandonar la agrupacion minera (mining pool) voluntariamente y la redujo al 38% en cuestión de dos días. Esto no se hizo por razones financieras, ya que las personas que abandonaron Ghash no recibieron ningún incentivo monetario. Pero lo hicieron porque creían en Bitcoin y en la descentralización y en el deseo de hacer lo correcto.

En el mundo ideal, los incentivos monetarios y morales deberían estar alineados.
En el ejemplo de Bitcoin dado anteriormente, no era ideal, ya que la gente tenía que elegir entre hacer lo correcto desde el punto de vista moral o buscar beneficios económicos.

El objetivo de Cardano es alinear estas dos cosas: si usted maximiza sus ganancias, automáticamente está haciendo lo correcto.

¿Qué queremos incentivar?

  • A los participantes a estar en línea
  • Participación en el protocolo: cuando las partes interesadas son elegidas como líderes de una determinada franja horaria, deben estar en línea en esa franja horaria para crear el bloque

Por otro lado, puede haber personas que no están interesadas o que no tienen los conocimientos técnicos para configurar el software o el tiempo para estar en línea →, pero aún así pueden participar delegando su participación en una agrupacion de participantes (stake pool)

Configuración deseada

  • El 80% de toda la participación debe delegarse en un número ( k) de agrupaciones de participantes (stake pools)
  • K debe estar alrededor del 100 (el numero se elevo a 1000 al momento de la traduccion. 31 de Enero 2019)
  • Y esas agrupaciones de participantes (stake pools) deberían ser usuarios avanzados y estar en línea cuando sea necesario.
  • También deben proporcionar infraestructura de red adicional (nodos de retransmisión)
  • Está bien que el 20% restante participe en el protocolo por su cuenta o simplemente no haga nada

El equipo está configurando los incentivos de manera que logren este resultado.

Mecanismo de delegación

Cardano es un sistema de PoS (Proof of Stake - Prueba de Participacion). Tener una participación (poseer Ada) significa algo más que tener Bitcoin. Ada puede ser utilizada para comprar bienes o servicios ya que es una criptomoneda, pero además del poder de compra/pago, también significa que usted tiene el derecho y la obligación de participar en el protocolo y crear bloques.

Estos 2 usos pueden ser separados por el mecanismo de delegación - lo que significa que alguien que posee Ada puede mantener el poder adquisitivo, mientras que delega el poder de participar en el protocolo a otra persona (agrupaciones de participantes (skate pools).
Es importante señalar que los fondos se pueden gastar normalmente en cualquier momento.

Direcciones

Hay 3 tipos distintos de direcciones o cuentas. Cada uno de los cuales está asociado a 2 llaves (par). Una llave es para el pago y otra para la delegacion/generacion de intereses (staking key).

3 Tipos de direcciones:

  • Dirección de base: la llave de delegacion (staking key) está directamente vinculada a la dirección
  • Pointer Address: es más indirecto. La dirección apunta a un punto de la cadena de bloques → en ese punto de la cadena de bloques, hay algunos metadatos que definen la llave de delegacion (staking key)
  • Dirección de empresa: no delegar/generar intereses (stake). Se utiliza para los intercambios (exchangers). Desde el punto de vista de la cadena de bloques (blockchain), los intercambios (exchangers) son extremadamente ricos. Pero el Ada en esta dirección en realidad pertenece a un número de individuos separados que depositaron en la bolsa. No se quiere que los intercambios (exchangers) utilicen el dinero de los clientes para participar en el protocolo. Este tipo de dirección sólo puede transferir fondos.

Qué es el certificado de delegación

Es una pieza de metadatos firmada criptográficamente en la blockchain que transfiere los derechos de delegacion/generacion de intereses de una llave de delegacion (staking key) a otra.

Un certificado de delegación puede ser publicado en la blockchain, en cuyo caso se denomina peso pesado. Esta transacción estará en la blockchain y parte de estos metadatos será la certificación de esta delegación. Debido a esto, habrá cargos por transacción (los mismos que los cargos normales).

También hay certificados de peso ligero. No se publican en la blockchain y no forman parte de los metadatos de la transacción. Sólo se hacen públicos como parte de un bloque y el creador del bloque los incluye en las cabeceras de los bloques, para demostrar que tiene los derechos de participación para la dirección que fue elegida como líder de la franja horaria.

Si hay certificados contradictorios (es decir, si delegas en alguien y luego en otra persona) y hay 2 certificados de delegación. Hay una regla para romper el empate, y esta es la que más tarde gane en la blockchain.

Registro de Agrupacion de Participantes (Staking Pool)

Si uno quiere crear una agrupacion de participantes (staking pool), debe crear formalmente un registro y ser escrito en la blockchain. La agrupacion de participantes (staking pool) creará un certificado de registro. Esto también se incluirá en una transacción especial (por lo tanto, habrá una tasa para crear una agrupacion de participantes (staking pool)) en el sistema. El certificado contiene la llave de delagacion del líder de la agrupacion de partipantes (staking pool). Las personas que deseen delegar en este grupo crearán un certificado de delegación en el que transferirán sus derechos de participación a esa clave de participación.

Mecanismo de Incentivos: ¿De dónde proviene el dinero para los incentivos?

Hay dos fuentes de fondos para los incentivos.

  1. Tarifas de transacción
    Hay dos razones principales para las comisiones de transacción:
  • Prevención de ataques DDos (Distributed Denial of Service)
    En un ataque DDoS, un atacante intenta inundar la red con transacciones ficticias para sobrecargar el sistema. Si tiene que pagar una tarifa suficientemente alta por cada una de esas transacciones ficticias, esta forma de ataque será prohibitivamente cara para él.
  • Para proporcionar fondos para incentivos.

En una seccion siguiente se explicara cómo se calculan las comisiones.

  1. Expansión Monetaria
    El suministro total de Ada en la actualidad es de aproximadamente 31.000 millones. Y la oferta máxima es de 45.000 millones. Por lo tanto, hay una brecha de 14 mil millones de Ada disponibles. Estos Ada también se pueden utilizar como incentivos.

Aunque se trata de una cantidad muy grande, no es infinita.
La idea es hacer algo similar a Bitcoin, que es tener una disminución exponencial con el tiempo (el porcentaje utilizado para los incentivos será cada vez menor). El objetivo y la esperanza es que, por supuesto, Cardano se convierta en un gran éxito. Con ello, más y más personas lo utilizarán y la cantidad recibida a través de las comisiones por transaccion aumentará. Esto creará menos necesidad de este dinero extra para la expansión monetaria.

¿Cómo funcionan los honorarios?

Hay una regla que es de código rígido, para cada transacción sobre lo que son los honorarios mínimos. Cada transacción, debe incluir por lo menos honorarios mínimos. Por lo tanto, las entradas para las transacciones tienen que ser más grandes que las salidas de la transacción y la diferencia debe ser por lo menos la tarifa mínima (o puede pagar más si lo desea).

Fórmula de honorarios mínimos

Es una función lineal:
a + b x tamaño
(“tamaño” es el de la transacción, en bytes, y no el importe de Ada)

a = constante, en este momento es 0,155381 Ada
Necesario para la prevención de DDoS → de modo que no importa lo pequeña que sea la transacción, debería costar lo suficiente para dañar a un ataque que intenta generar miles de transacciones ficticias.

b = constante, en este momento es 0,000043946 Ada/byte
Esto es para ser justos. La idea es que usted debe pagar por la presión que ejerce sobre el sistema. Si usted tiene una transacción grande, las personas que ejecutan el protocolo tendrán que almacenar sus datos en su computadora y tener memoria en la computadora. Por lo tanto, tiene sentido que cuanto más grande sea la transacción, más cara debería ser.

A modo de ejemplo: Tome una transacción, con un tamaño bastante típico de 200 bytes. Introduciendo las constantes y el tamaño, la tarifa de transacción se verá como:
0,155381 Ada + 0,000043946 Ada/byte x 200 bytes = 0,1641702 Ada

En algún momento, se prevé que los valores puedan ajustarse para reflejar mejor los costes reales. Esto depende del curso de Ada y de las estadísticas de uso del sistema.

El Dr. Brünjes también señala aquí que puede haber términos adicionales en el futuro. Hay ideas como mirar el número de UTxO (lo que hace que su billetera sea más complicada) y también afecta la cantidad de datos, o mirar el tamaño real de Ada (grandes cantidades de Ada, no sólo en byte).

Distribución de incentivos

En Cardano, existe una estricta división del tiempo (en Épocas y Franjas horarias).
Las Franjas (Slots) duran 20 segundos. Para cada franja (slot), se elige al azar una moneda y el propietario de esa moneda tiene el derecho de crear este bloque en esa franja.
Cada Época (Epoch) contiene 21.600 franjas (slots), es decir, exactamente 5 días. Una época es cuando ocurre el proceso de elección/aleatorización. Cada 5 días, la gente ‘tira sus dados’ y los líderes de franja (slot) para la siguiente época (Epoch) son elegidos en ese momento.

En Bitcoin, la distribución se produce bloque a bloque. Pero en Cardano, el plan es distribuir los incentivos época por época. Todas las comisiones de transacción (de todos los bloques de una época) más la expansión monetaria se pondrán en un fondo común de recompensas, para toda la época. Entonces toda este fondo será distribuido entre las personas que fueron activas/importantes durante esta época.

Idea básica de la distribución: Explicado en dos pasos

  1. Cómo se distribuye todo el pool de recompensas entre los pools

La idea básica es hacerlo proporcional a la participacion /inversion para que se pueda ver la participacion y hacer el cálculo. O puede ver el número de franjas (slots) en esa época en la que ese grupo fue elegido como líder de franja (slot) (no el número de bloques reales que creó).

Estos dos enfoques parecen diferentes al principio, pero la probabilidad de ser elegido líder de franja (slot) es proporcional a la participacion /inversion (debido a cómo funciona el protocolo cardano). Entonces, estos métodos tienen las mismas recompensas esperadas.

Hay dos refinamientos, a seguir:

Refinamiento 1:
La proporción máxima de recompensas que puede recibir una agrupacion de participantes (stake pool) estará limitada a 1/k
(k es el número de grupos (pools) deseados, probablemente alrededor de 100) (al momento de traduccion se pronostican 1000 stake pools, 31 de enero 2019)
Sin esto, las agrupaciones de participantes (stake pools) querrían ser cada vez más grandes porque todavía reciben la misma recompensa, con un costo más bajo, ya que los gastos generales no serán mucho más altos que los de una agrupacion de participantes (stake pool) más pequeña.

Por ejemplo:
si k = 100
A y B con un 0,3% y un 1,2% de participación, respectivamente.
A" recibirá el 0.3% de las recompensas, pero “B” recibirá 1/100 = 1%.
En este ejemplo, no importa cuán alta sea su participacion /inversion, nunca podrá obtener más del 1% de las recompensas. La esperanza es que esto tenga el efecto de que las agrupaciones (staking pools) no se agranden demasiado.

Refinamiento 2:
Hasta ahora, todo esto dependía únicamente de la participacion /inversion que tiene la agrupacion de participantes (stake pool), pero no del trabajo que realmente realizan. Se necesita un mecanismo que compruebe que se están creando bloques en el momento de la elección. Por lo tanto, las agrupaciones de participantes (stake pools) deben ser penalizadas por no seguir el protocolo y no estar en línea cuando es su turno.

Este predicado decidirá si la agrupacion de participantes (stake pool) es elegible para su participación en el fondo de recompensas, observando las franjas horarias para las que se eligió como líder a una determinada agrupacion de participantes (stake pool) y el número de bloques que realmente creó. Esto no puede ser tan simple como “crear al menos el x% de los bloques que se suponía que debía”. → Dicen que debes crear al menos el “90%” de los bloques que has sido elegido para crear para recibir tu recompensa. En este caso, si un grupo (stake pool) es elegido para 100 slots en la época, y ya ha creado 90 bloques, entonces lo más probable es que simplemente apaguen el ordenador e ignoren los últimos 10. Si todos hicieran eso, entonces al final de las épocas, todos apagarían la computadora, lo cual no es bueno.
Es por eso que necesita ser un poco más complicado, ya sea la aleatorización u otros algoritmos.

  1. Cómo un grupo (stake pool) divide las recompensas entre los miembros:

Después de que las recompensas se hayan dividido entre las agrupaciones de participantes (stake pools), cada líder de stake pool tiene que distribuir su parte de los intereses entre los miembros de su fondo. Los miembros del grupo son las personas que delegaron su participación en el grupo

Las dos directrices generales son:

  • El lider del grupo (stake pool) debe ser compensads por sus costos (hardware, registro, potencia de computación, tiempo en línea, etc.) y recompensado por sus esfuerzos.
  • Los miembros del grupo (stake pool) deben ser recompensados proporcionalmente a la participación que delegaron al grupo.

Para entender esto, tomemos este ejemplo:
Considere a la líder del grupo (stake pool) Alice con un 0,2% de participación que forma su grupo con Bob (0,1% de participación) y Charlie (0,2% de participación).

Supongamos además que el fondo de recompensa para una época ficticia, y que contiene 5.000.000 Ada. También asuma que el grupo de Alice cumplió con sus predicados y creó bloques obedientemente durante todas las franjas horarias en las que fue elegido líder de franja (slot)

Entonces, el grupo de Alice que tiene (0,2% + 0,1% + 0,2%) 0,5% de participación, que es inferior a 1/k y no tiene tope: recibirá (0,5% de 5.000.000) 25.000 Ada del fondo de recompensas para esta época.

De los 25.000 Ada, Bob recibirá la mitad de lo que recibe Charlie.
Pero Charlie recibirá menos que la propia Alicia, para recompensar a Alicia por el costo y la molestia de manejar su grupo (stake pool)

Supongamos que esta compensación adicional para ejecutar un pool en este ejemplo es de 5.000 Ada. Esto irá al líder del grupo (stake pool). Así que de los 20.000 restantes, puede hacer un cálculo 2:1:2 basado en el porcentaje de participación.
Alice recibirá 13.000 Ada (8.000 + 5.000)
Bob obtendrá 4.000 Ada
Charlie recibirá 8.000 Ada

*Nota! Este ejemplo es puramente ficticio y tiene por objeto explicar la idea de la distribución de recompensas. De ninguna manera refleja las futuras cantidades de recompensas reales!

Fondos sin Distribuir

Hay dos razones por las que usted podría recibir menos:

  • Si tiene más de 1/k como se explicó anteriormente
  • Si no haces tu trabajo y participas en el protocolo

En estos casos, las recompensas no son distribuidas. Es importante que esta recompensa no gastada no se distribuya entre el resto de la gente. Esto no es un error, sino más bien una característica, porque estos fondos irán a la tesorería que promueve la sustentabilidad del sistema.

No hay Competencia entre los Grupos (stake pools)

Una consecuencia importante de estos grupos de participantes (stake pools) no distribuidos es que significa que no hay competencia entre ellos. No hay nada que un grupo pueda hacer para aumentar sus recompensas disminuyendo la recompensa de otro grupo. No hay ningún incentivo para que un grupo sabotee el trabajo de otro grupo.

Los ataques clásicos en Bitcoin como la minería egoísta o la retención de bloques no pueden funcionar porque los gupos (stake pools) están cercadas entre sí. Las acciones de un grupo sólo afectan a sus propias recompensas.

Y sus diapositivas de presentación se pueden encontrar aquí

Resumen original realizado en inglés gracias a @maki.mukai
Ver Resumen original aquí.

4 Likes