SIAE, una de las mayores empresas de administración de derechos fundada en 1882, lanza 4 millones de NFT en Algorand que representan los derechos de casi 100 000 creadores.

Blog

Jun 24, 2019

Las recompensas de Algorand: descripción técnica general

By: Yossi Gilad, jefe de investigación de sistemas y director de tecnología en Algorand

Esta publicación está destinada a ayudar a explicar cómo se implementan las recompensas en el código fuente de Algorand y su impacto correspondiente para los titulares de tokens. Si tienes preguntas sobre la filosofía o los montos de recompensa, visita Fundación Algorand.

Dado que Algorand Inc desarrolló el protocolo blockchain de Algorand, estamos en una posición única para dar una idea de cómo se implementó el mecanismo de recompensas. Esta publicación te explicará cómo se calculan las recompensas, cómo se pagan, cómo aparecen los datos de recompensas y algunas implicaciones prácticas de nuestra implementación.

Definiciones

  • Unidad de ganancia mínima (MEU): La cantidad de participación que debe tener la dirección de un usuario para ser apto para ganar recompensas. El MEU actual es 1 Algo.
  • Unidades de ganancia de usuario (UEU): Un número discreto calculado dividiendo la participación de un usuario por el MEU.
  • Unidades de ganancia total (TEU): Un número discreto calculado sumando todas las UEU en el sistema.
  • Fondo de recompensas: La cantidad de participación en la dirección de Algorand 737777777777777777777777777777777777777777777777777UFEJ2CI que se usa únicamente para pagar recompensas cuando son ganadas. La Fundación Algorand es responsable de proveer de fondos a esta dirección.
  • Periodo de recompensas: La cantidad de bloques entre los cálculos de recompensas por bloque. Las recompensas por bloque durante cada período de recompensas se fijan hasta que se recalculan para comenzar un nuevo período de recompensas. El período de recompensas actualmente está configurado en 500 000 bloques.

Vistazo general

  • Todas las direcciones que contienen una MEU o más recibirán recompensas.
  • La Fundación Algorand deposita una cantidad establecida de tokens en el fondo de recompensas por un período de recompensas específico (visita https://algorand.foundation/es/token-dynamics).
  • El número de tokens en el fondo de recompensas luego es dividido por el número de bloques en el período de recompensas para determinar el monto fijo de recompensas por bloque para el período de recompensas.
  • A medida que cada bloque se escribe en la blockchain, la cantidad de recompensas por bloque se divide entre todos los titulares de tokens en función de la cantidad de participación que tienen en comparación con la participación total.
  • La porción de un individuo en la cantidad de recompensas por bloque puede cambiar en base a si gana o pierde tokens.
  • Estas recompensas se acumulan en la red Algorand y son reclamadas por una cuenta específica cuando se confirma una transacción que involucra dicha cuenta. Las direcciones involucradas en una transacción son: el remitente, el destinatario y la dirección CloseRemainderTo (si existe).

Cómo se calculan las recompensas

La recompensa fija por bloque se calcula como (fondo de recompensas / período de recompensas).

- Ten en cuenta que este cálculo se hace solo una vez por período de recompensa, al comienzo

Las TEU se calculan en cada bloque sumando todas las UEU en el sistema en ese bloque.

La recompensa de cada usuario por cada bloque se calcula como (UEU / TEU) * la recompensa fija por bloque. Este cálculo se realiza por cada bloque para que cada usuario tenga en cuenta el cambio de saldos de la cuenta.

Cómo se pagan las recompensas

La unidad divisible mínima de un Algo es un microAlgo (10^-6). Calculamos las recompensas de cada bloque y hay bloques en los que una cuenta con MEU no habrá obtenido un microAlgo completo de las recompensas de ese bloque. Por lo tanto, el protocolo Algorand suma las recompensas pendientes de una cuenta tan pronto como un MEU gana un microAlgo completo en recompensas. El encabezado del bloque mantiene el campo "frac" para realizar un seguimiento de las recompensas que deberían haberse distribuido en bloques anteriores, pero que no se distribuyeron porque el monto a recompensarse era menor que un microAlgo, El valor del campo frac del bloque anterior se agrega a las recompensas que otorga un bloque, por lo que, eventualmente, incluso estas pequeñas recompensas sobrantes serán distribuidas.

Tiempo de distribución de recompensas. El protocolo Algorand calcula las recompensas en cada bloque, pero puede tomar varios bloques hasta que un MEU acumule un micro-Algo completo que permita agregar recompensas a todas las cuentas que son aptas. El tiempo de distribución es una función de las TEU en el sistema. Cuando todos los tokens están en circulación, las TEU serán como máximo 10 mil millones. Supón que se recompensan 20 algos en cada bloque, entonces se necesitarían 500 bloques para acumular 1 micro-Algo por unidad de ganancia. Con los bloques generados cada 5 segundos, las recompensas se desembolsan cada 500 * 5 segundos = 41 minutos.

Ejemplo. Veamos un ejemplo simple para explicar el protocolo de recompensas de Algorand:

Supón que las TEU son 10 millones y que cada bloque distribuye 1 Algo en recompensas.

Como 1 Algo/10 millones es menos que un micro-Algo, el campo de recompensa en el encabezado no aumentaría inicialmente. En cambio, para cada uno de los primeros 9 bloques, el campo frac registrado en los encabezados aumentaría de 0 a 9. En el décimo bloque, se desembolsarían 10 algos (9 algos del encabezado "frac", el resto de los bloques anteriores, y 1 Algo que recompensa el décimo bloque). El encabezado del bloque en el décimo bloque tendría, por lo tanto, el campo "earn" en 1, lo que significa que cada unidad de ganancia completa obtiene 1 micro-Algo. El campo "frac" quedaría en 0 ya que no hay recompensas sobrantes.

Obtener datos de recompensas de la blockchain de Algorand

Cada bloque contiene los siguientes campos y pueden consultarse utilizando los SDK, curl o la API REST (por ejemplo /v1/block/{round}

  • Reward: La cantidad de microAlgos por MEU ganados desde la génesis.
  • Rate: El monto total de recompensa por ese bloque.
  • Frac: La unidad divisible mínima de Algos es un microAlgo (10^-6). Sin embargo, debido a que calculamos las recompensas en cada bloque, hay casos en los que una cuenta con MEU no habrá ganado un microAlgo completo. Este campo mantiene ese número hasta que alcanza un microAlgo completo y se les paga a los usuarios.

Los detalles de las recompensas pendientes, las recompensas reclamadas y el saldo de una cuenta están disponibles para consultar. Esto se puede hacer usando los SDK, curl o la API REST. Todos estos hacen uso de la ruta REST path /v1/account/{address}

Cuando consultas una cuenta, encontrarás cuatro campos relacionados con las recompensas y el saldo.

  1. Amount: El número indica el saldo de los usuarios y las recompensas pendientes no reclamadas.
  2. Amountwithoutpendingrewards: Este número indica el saldo de los usuarios sin las recompensas pendientes no reclamadas.
  3. Pendingrewards: Este número indica las recompensas pendientes no reclamadas.
  4. Rewards: Este número indica las recompensas totales que esta cuenta ha ganado a lo largo del tiempo.

Como las recompensas se reclaman cuando ocurren las transacciones, las recompensas reclamadas de esa transacción también están disponibles para consultarse. Esto se puede hacer por medio de los SDK, curl o la API REST (por ejemplo /v1/account/{address}/transaction/{txid}). 

Cuando consultas una transacción, encontrarás tres campos relacionados con las recompensas.

  1. closerewards (opcional): Integer CloseRewards es la cantidad de recompensas pendientes no reclamadas aplicadas a la cuenta CloseRemainderTo como parte de esta transacción. Formato: uint64
  2. torewards (optional): Integer ToRewards es la cantidad de recompensas pendientes no reclamadas aplicadas a la cuenta To como parte de esta transacción. Formato: uint64
  3. fromrewards (optional): Integer FromRewards es la cantidad de recompensas pendientes aplicadas a la cuenta From como parte de esta transacción. Formato: uint64

Las recompensas pendientes no reclamadas son reclamadas por una dirección cuando esa dirección está contenida dentro de los parámetros To, From o Close de una transacción. Eso significa que es imposible realizar transacciones sin reclamar primero las recompensas pendientes no reclamadas. Si existen recompensas pendientes no reclamadas para reclamar, se anotarán en la transacción y estarán disponibles cuando consultes esa transacción.

Algorand Inc. y sus empresas asociadas son entidades separadas e independientes de la Fundación Algorand. Algorand Inc. es actualmente un proveedor de servicios para la Fundación Algorand en relación al desarrollo de protocolo blockchain.

Para obtener más noticias y actualizaciones de Algorand, suscríbete a nuestro boletín: