Para agregar una parachain a Polkadot debe ocupar uno de los slots (ranuras) disponibles para parachain. Un slot (ranura) de parachain es un recurso escaso en Polkadot y sólo un número limitado estará disponible. A medida que las parachains aumenten, es posible que sólo se desbloqueen unos pocos slots (ranuras) cada pocos meses. El objetivo es llegar a tener 100 slots de parachain disponibles en Polkadot (que se dividirán entre las parachains y el grupo de parathreads). Si una parachain quiere tener garantizada la inclusión en cada bloque de la Relay Chain, debe adquirir un slot (ranura) de parachain.
Los slots de parachain se venderán según una subasta de velas sin permiso que ha sido ligeramente modificada para ser segura en una blockchain.
Mecánica de una Subasta de Velas #
Las subastas de velas son una variante de las subastas abiertas en las que los postores presentan ofertas cada vez más altas y el mayor postor al concluir la subasta es considerado el ganador.
Las subastas de velas se emplearon originalmente en el siglo XVI para la venta de barcos y reciben su nombre de la “pulgada de una vela” que determinaba el periodo abierto de la subasta. Cuando la llama se extinguía y la vela se apagaba, la subasta terminaba repentinamente y ganaba la oferta en pie de ese momento.
Cuando las subastas con velas se utilizan en línea, requieren un número aleatorio para decidir el momento de la terminación. Las subastas de slot (ranuras) de Parachain difieren ligeramente de una subasta de velas normal en que no utiliza el número aleatorio para decidir la duración de su fase de apertura.
La subasta de velas en Polkadot se divide en dos partes: el periodo de apertura (opening period) que está vigente inmediatamente después de que la subasta comienza. Este periodo dura un día y dieciocho horas y sirve como tiempo de amortiguación para que los candidatos a parachains establezcan sus pujas iniciales, y probablemente empiecen a ejecutar su estrategia sobre cómo ganar la subasta de velas. Durante la fase de apertura, se siguen aceptando ofertas, pero no tienen ningún efecto sobre el resultado de la subasta.
A continuación, el periodo de apertura da paso a un periodo de finalización (ending period) de cinco días, en el que la subasta está sujeta a finalizar en función del mecanismo de subasta de velas.
El momento de finalización de la subasta puede ser cualquier momento dentro de este periodo de finalización, y es elegido automáticamente y de forma aleatoria por la Función Aleatoria Verificable (VRF). La probabilidad de ganar la subasta es igual al número de bloques con una oferta ganadora dividido por el número total de bloques en el periodo de finalización. El final aleatorio se gestiona mediante la propagación a través de todo el periodo de finalización, donde se toma una instantánea en cada bloque dentro del periodo de finalización para capturar los ganadores durante ese bloque. Al final del periodo, se selecciona aleatoriamente una de las instantáneas para determinar el ganador de la subasta.
Este proceso se ejecuta seis horas después del periodo de finalización. El candidato a parachain con la oferta más alta a la hora de finalización elegida por el VRF gana la subasta de slot.
- No se pueden realizar contribuciones de crowdloan (préstamos colectivos) durante estas seis horas en las que se está determinando en la cadena (on-chain) el bloque ganador de la subasta.
Con un día y dieciocho horas para el periodo de inicio, cinco días para el periodo de finalización (fase de subasta de velas) y seis horas para determinar el ganador de la subasta, una subasta de parachain en Polkadot dura exactamente una semana desde el inicio.
Puedes encontrar más detalles sobre esto en la sección de Implementación de Polkadot.
Aleatoriedad en acción #
El siguiente ejemplo mostrará la mecánica de aleatoriedad de la subasta de velas para la novena subasta en Kusama. Hay que tener en cuenta que la fase de velas tiene un perfil de terminación uniforme y tiene la misma probabilidad de terminar en cualquier bloque, y el bloque de terminación no se puede predecir antes o durante la subasta.
- La subasta 9 comienza en el
block 9362014
.- La subasta tiene una duración completa igual al
block 9362014
+72000
. Aquí, elblock 72000
es el “periodo de finalización”, que se divide en 3600 muestras de 20 bloques. Figurativamente, la vela se enciende, y la fase de vela dura 72.000 bloques.
- La subasta tiene una duración completa igual al
- La muestra ganadora durante el periodo final resultó tener el
index 1078
.- La muestra 1078 se refiere al ganador a partir del
block 9362014 + 21560
, que equivale alblock 9383574
.
- La muestra 1078 se refiere al ganador a partir del
- El bloque principal era una nueva sesión de BABE en los ‘Logs’, que actualizaba la aleatoriedad que se utilizaba para seleccionar ese índice de muestra.
- Podrías inspeccionar el estado al final del
block 9434277
y ver los índices de muestra con un nodo de archivo. El compendio en el ‘Logs’ de9434277
es decodificable y contiene el valor aleatorio así como las autoridades BABE.
- Podrías inspeccionar el estado al final del
- Como resultado, el ganador de esta subasta no resultó ser la oferta más alta durante toda la duración.
Justificación #
La naturaleza abierta y transparente de los sistemas blockchain abre vectores de ataque que no existen en los formatos de subasta tradicionales. Las subastas abiertas normales, en particular, pueden ser vulnerables al “sniping” de las subastas cuando se implementan en Internet o en una blockchain.
El “sniping” de las subastas tiene lugar cuando se conoce el final de una subasta y los ofertantes dudan en ofertar su precio real antes de tiempo, con la esperanza de pagar menos de lo que realmente valoran el artículo.
Por ejemplo, Alice puede valorar un artículo en subasta por 30 dólares. Hace una oferta inicial de 10 USD con la esperanza de adquirir el artículo a un precio inferior. La estrategia de Alice consiste en realizar ofertas cada vez más altas hasta superar su valor real de 30 USD. Otra ofertante, Eve, valora el mismo artículo en 11 USD. La estrategia de Eve es observar la subasta y presentar una oferta de 11 USD en el último segundo. Alice no tendrá tiempo de responder a esta oferta antes del cierre de la subasta y perderá el artículo. El mecanismo de subasta no es óptimo porque no ha descubierto el verdadero precio del artículo y éste no ha ido a parar al actor que más lo valoraba.
En las blockchains, este problema puede ser aún peor, ya que potencialmente da al productor del bloque la oportunidad de robar cualquier subasta en el último bloque concluyente añadiéndola él mismo y/o ignorando otras ofertas. También existe la posibilidad de que un postor malintencionado o un productor de bloques trate de perjudicar a los postores honestos mediante el sniping de subastas.
Por esta razón, las subastas Vickrey, una variante de la subasta de segundo precio en la que las ofertas se ocultan y sólo se revelan en una fase posterior, han surgido como una mecánica bien considerada. Por ejemplo, se implementa como mecanismo para subastar nombres legibles para el ser humano en el ENS. La subasta de velas es otra solución que no necesita los esquemas de confirmación y revelación en dos pasos (un componente principal de las subastas Vickrey), y por esta razón permite que participen los contratos inteligentes.
Las subastas de velas permiten que todos conozcan siempre el estado de la oferta, pero no cuándo se determinará que la subasta ha terminado. Esto ayuda a garantizar que los postores estén dispuestos a hacer sus verdaderas ofertas antes de tiempo. De lo contrario, podrían encontrarse en la situación de que la subasta se determinara como terminada antes de que ellos siquiera ofertaran.
Implementación de Polkadot #
Polkadot utilizará un beacon aleatorio basado en el VRF que se utiliza también en otros lugares del protocolo. El VRF proporcionará la base de la aleatoriedad, que determinará retroactivamente la hora de finalización de la subasta.
La duración del slot tiene un límite de 2 años y se divide en períodos de 3 meses; las parachains pueden arrendar un slot (ranura) para cualquier combinación de períodos de duración del slot. Las parachains pueden arrendar más de un slot a lo largo del tiempo, lo que significa que podrían extender su arrendamiento a Polkadot más allá de la duración máxima arrendando un slot (ranura) contiguo.
Nota: Los slots individuales de las parachains son fungibles. Esto significa que las parachains no necesitan habitar siempre el mismo espacio, pero mientras un parachain habite cualquier slot puede continuar como parachain.
Oferta #
Las parachains, o los equipos de parachains, pueden ofertar en la subasta especificando el rango de slot (ranura) que quieren arrendar, así como el número de tokens que están dispuestos a reservar. Los ofertantes pueden ser cuentas ordinarias o utilizar la funcionalidad de crowdloan para obtener tokens de la comunidad.
Cada período del rango 1 – 4 representa una duración de 3 meses para un total de 2 años
Los ofertantes presentarán una configuración de ofertas especificando la cantidad de tokens que están dispuestos a vincular y para qué periodos. Los rangos de slots (ranuras) pueden ser cualquiera de los períodos 1 – n
, donde n
es el número de períodos disponibles para un slot (n
será 8 tanto para Polkadot como para Kusama).
- Ten en cuenta: Si vinculas tokens con un slot de parachain, no puedes hacer staking con esos tokens. De este modo, pagas por el slot de parachain perdiendo la oportunidad de ganar recompensas de staking.
La configuración de un ofertante para un solo postor puede ser como el siguiente ejemplo de pseudocódigo:
El concepto importante que hay que entender de este ejemplo es que los ofertantes pueden presentar diferentes configuraciones a diferentes precios (bond_amount
). Sin embargo, sólo una de estas ofertas podrá ganar, excluyendo las demás.
El algoritmo de selección del ganador elegirá las ofertas que no se solapen para maximizar la cantidad de tokens que se mantienen durante toda la duración del arrendamiento del slot de parachain. Esto significa que el mejor ofertante para cualquier período de alquiler del slot (ranura) no siempre puede ganar (véase el ejemplo siguiente).
En cada bloque se determina un número aleatorio, que se basa en el VRF utilizado por Polkadot. Además, cada subasta tendrá un umbral que comienza en 0 y aumenta hasta 1. El número aleatorio producido por el VRF se examina junto al umbral para determinar si ese bloque es el final de la subasta dentro del llamado ending period (periodo de finalización). Además, el VRF elegirá un bloque de la última época para tomar el estado de las ofertas (para mitigar algunos tipos de ataques de validadores maliciosos).
Ejemplos #
Hay un slot (ranura) de parachain disponible.
Charlie oferta 75
por el rango 1 – 8.
Dave oferta 100
por el rango 5 – 8.
Emily oferta 40
por el rango 1 – 4.
Calculemos la valoración de cada postor según el algoritmo. Lo hacemos multiplicando el importe vinculado por el número de periodos en el rango especificado de la oferta.
Charlie – 75 * 8 = 600 para el rango 1 – 8
Dave – 100 * 4 = 400 para el rango 5 – 8
Emily – 40 * 4 = 160 para el rango 1 – 4
Aunque Dave tenía la oferta más alta de acuerdo con la cantidad de tokens, al hacer los cálculos vemos que, como sólo ofertó por un rango de 4, tendría que compartir el slot con Emily, que pujó mucho menos. La suma de las ofertas de Dave y Emily sólo equivale a una valoración de 560
.
La valoración de Charlie para todo el rango es de 600
. Por lo tanto, a Charlie se le adjudica el rango completo del slot (ranura) de parachain.
Preguntas Frecuentes #
¿Por qué no todos pujan por la duración máxima? #
Durante la duración del slot los tokens ofertados en la subasta estarán bloqueados. Esto significa que hay costos de oportunidad por la posibilidad de usar esos tokens para otra cosa. Para las parachains que son beneficiosas para Polkadot, esto debería alinear los intereses entre las parachains y la Relay Chain de Polkadot.
¿Cómo ayuda este mecanismo a garantizar la diversidad de parachains? #
El método para dividir los slots (ranuras) de las parachains en intervalos se inspiró en parte en el deseo de permitir una mayor diversidad de parachains, y evitar que las parachains particularmente grandes y bien financiadas acaparen slots. Al hacer que cada periodo tenga una duración de tres meses, pero que el slot total tenga una duración de dos años, el mecanismo puede hacer frente a las parachains bien financiadas que se asegurarán un slot al final de su arrendamiento, al tiempo que permite gradualmente que otras parachains entren en el ecosistema para ocupar las duraciones que no se llenan. Por ejemplo, si una parachain grande y bien financiada ya ha adquirido un slot para el rango 1 – 8, estaría muy interesada en conseguir el siguiente slot que se abriría para el 2 – 9. Bajo este mecanismo, esa parachain podría adquirir sólo el periodo 9 (ya que es el único que necesita) y permitir que el rango 2 – 8 del segundo slot (ranura) de la parachain sea ocupado por otra.
¿Por qué es difícil la aleatoriedad en las blockchains? #
La aleatoriedad es problemática para los sistemas de blockchains. Generar un número aleatorio sin confianza en una red transparente y abierta en la que otras partes deben ser capaces de verificar abre la posibilidad de que los actores intenten alterar o manipular la aleatoriedad. Se han propuesto algunas soluciones, entre las que se encuentran los hash-onions como RANDAO y las funciones aleatorias verificables (VRF). Estas últimas son las que Polkadot utiliza como base para su aleatoriedad.
¿Existen otras formas de adquirir un slot además de la subasta de velas? #
Otra forma, además de la subasta de velas, de adquirir un slot (ranura) de parachain es a través de un mercado secundario en el que un actor que ya ha ganado un slot de parachain puede revender el slot junto con el depósito de tokens asociado que está bloqueado a otro comprador. Esto permitiría al vendedor obtener tokens líquidos a cambio del slot de parachain y al comprador adquirir el slot así como los tokens depositados.
Los órganos de gobernanza de la Relay Chain pueden conceder slots (ranuras) a una serie de parachains de sistema o de bien común. Las parachains de sistema pueden ser reconocidas por un ID de parachain inferior a 1_000, y las parachains de bien común por un ID de parachain entre 1_000 y 1_999. Otras parachains tendrán IDs 2_000 o superiores. Estas parachains no tendrían que ofertar o renovar sus slots (ranuras), ya que se considerarían esenciales para el futuro del ecosistema.
Recursos #
Parachain Allocation – Página de investigación de W3F sobre la asignación de parachain que profundiza en el mecanismo
Research Update: The Case for Candle Auctions – Desglose y actualización de la investigación de W3F sobre las subastas de velas
Front-Running, Smart Contracts, and Candle Auctions – El equipo de investigación de W3F discute cómo remediar los actuales contratiempos de las subastas de blockchain con las subastas de velas