Saltar al contenido principal

Parámetros de las Subnets Elásticas

Las Subnets Permisionadas de Avalanche pueden convertirse en Subnets Elásticas a través de la transacción TransformSubnetTx. TransformSubnetTx especifica un conjunto de parámetros estructurales para la Subnet Elástica. Esta referencia describe estos parámetros estructurales e ilustra las restricciones que deben cumplir.

Parámetros de la Subnet Elástica

Subnet

Subnet tiene tipo ids.ID y es el ID de la Subnet. Subnet es el ID de la transacción CreateSubnetTx que creó la Subnet en primer lugar. Se aplican las siguientes restricciones:

  • Subnet debe ser diferente de PrimaryNetworkID.

AssetID

AssetID tiene tipo ids.ID y es el ID del activo a utilizar cuando se apuesta en la Subnet. Se aplican las siguientes restricciones:

  • AssetID no debe ser el ID Vacío.
  • AssetID no debe ser el ID AVAX, el activo de la Red Primaria.

InitialSupply

InitialSupply tiene tipo uint64 y es la cantidad inicial de AssetID transferidos en la Subnet Elástica al momento de su transformación. Dicha cantidad está disponible para distribuir recompensas de apuesta. Se aplican las siguientes restricciones:

  • InitialSupply debe ser mayor que cero.

MaximumSupply

MaximumSupply tiene tipo uint64 y es la cantidad máxima de AssetID que la Subnet tiene disponible para apuesta y recompensas en cualquier momento. Se aplican las siguientes restricciones:

  • MaximumSupply debe ser mayor o igual a InitialSupply.

El suministro de una Subnet puede variar con el tiempo, pero no debe ser mayor que el máximo configurado en ningún momento, incluida la creación de la Subnet.

MinConsumptionRate

MinConsumptionRate tiene tipo uint64 y es la tasa mínima que un validador puede ganar si se satisface el UptimeRequirement. Si StakingPeriod == MinStakeDuration, el validador ganará la MinConsumptionRate. Puedes encontrar más detalles al respecto en la sección de la Fórmula de Recompensa. Se aplican las siguientes restricciones:

  • MinConsumptionRate debe ser menor o igual a PercentDenominator.

Ver la sección Notas sobre Porcentajes para entender el papel de PercentDenominator.

MaxConsumptionRate

MaxConsumptionRate tiene tipo uint64 y es la tasa máxima que un validador puede ganar si se satisface el UptimeRequirement. Si StakingPeriod == MaxStakeDuration == MintingPeriod, el validador ganará la MaxConsumptionRate. Puedes encontrar más detalles al respecto en la sección de la Fórmula de Recompensa. Se aplican las siguientes restricciones:

  • MaxConsumptionRate debe ser mayor o igual a MinConsumptionRate.
  • MaxConsumptionRate debe ser menor o igual a PercentDenominator.

Ver la sección Notas sobre Porcentajes para entender el papel de PercentDenominator.

MinValidatorStake

MinValidatorStake tiene tipo uint64 y es la cantidad mínima de fondos requeridos para convertirse en un validador. Se aplican las siguientes restricciones:

  • MinValidatorStake debe ser mayor que cero.
  • MinValidatorStake debe ser menor o igual a InitialSupply.

MaxValidatorStake

MaxValidatorStake tiene tipo uint64 y es la cantidad máxima de fondos que un solo validador puede recibir, incluidos los fondos delegados. Se aplican las siguientes restricciones:

  • MaxValidatorStake debe ser mayor o igual a MinValidatorStake.
  • MaxValidatorStake debe ser menor o igual a MaximumSupply.

MinStakeDuration

MinStakeDuration tiene tipo uint32 y es el número mínimo de segundos que se puede hacer stake. Se aplican las siguientes restricciones:

  • MinStakeDuration debe ser mayor que cero.

MaxStakeDuration

MaxStakeDuration tiene tipo uint32 y es el número máximo de segundos que se puede hacer stake. Se aplican las siguientes restricciones:

  • MaxStakeDuration debe ser mayor o igual a MinStakeDuration.
  • MaxStakeDuration debe ser menor o igual a GlobalMaxStakeDuration.

GlobalMaxStakeDuration está definido en el génesis y se aplica tanto a la Red Primaria como a todas las Subnets.

Su valor en Mainnet es 365×24×time.Hour365 \times 24 \times time.Hour.

MinDelegationFee

MinDelegationFee tiene tipo uint32 y es la tasa mínima de tarifa que un delegador debe pagar a su validador por la delegación. MinDelegationFee es un porcentaje; la tarifa real se calcula multiplicando la tasa de tarifa por la recompensa del delegador. Se aplican las siguientes restricciones:

  • MinDelegationFee debe ser menor o igual a PercentDenominator.

La tasa MinDelegationFee también se aplica a la Red Primaria. Su valor en Mainnet es 2%2\%.

MinDelegatorStake

MinDelegatorStake tiene tipo uint64 y es la cantidad mínima de fondos requeridos para convertirse en un delegador. Se aplican las siguientes restricciones:

  • MinDelegatorStake debe ser mayor que cero.

MaxValidatorWeightFactor

MaxValidatorWeightFactor tiene tipo uint8 y es el factor que calcula la cantidad máxima de delegación que un validador puede recibir. Un valor de 1 deshabilita efectivamente la delegación. Puedes encontrar más detalles al respecto en la sección de Verificaciones de Peso de Delegadores. Se aplican las siguientes restricciones:

  • MaxValidatorWeightFactor debe ser mayor que cero.

UptimeRequirement

UptimeRequirement tiene tipo uint32 y es el porcentaje mínimo de su tiempo de apuesta que un validador debe estar en línea y ser receptivo para recibir una recompensa. Se aplican las siguientes restricciones:

  • UptimeRequirement debe ser menor o igual a PercentDenominator.

Ver la sección Notas sobre Porcentajes para entender el papel de PercentDenominator.

Fórmula de Recompensa

Considera un validador de una Subnet Elástica que apuesta una cantidad de StakeStake AssetID durante StakingPeriodStakingPeriod segundos.

Supongamos que al inicio del período de apuesta hay una cantidad de SupplySupply AssetID en la Subnet. La cantidad máxima de activos de la Subnet es MaximumSupplyMaximumSupply AssetID.

Entonces, al final de su período de apuesta, un validador elástico y receptivo de la Subnet recibe una recompensa calculada de la siguiente manera:

Recompensa=(MaximumSupplySupply)×StakeSupply×StakingPeriodMintingPeriod×TasaDeConsumoEfectivaRecompensa = \left(MaximumSupply - Supply \right) \times \frac{Stake}{Supply} \times \frac{Staking Period}{Minting Period} \times TasaDeConsumoEfectiva

donde

MaximumSupplySupply=la cantidad de tokens que quedan por emitir en la Subnet MaximumSupply - Supply = \text{la cantidad de tokens que quedan por emitir en la Subnet } StakeSupply=la apuesta individual como porcentaje de todos los tokens disponibles en la red\frac{Stake}{Supply} = \text{la apuesta individual como porcentaje de todos los tokens disponibles en la red} StakingPeriodMintingPeriod=tiempo que los tokens estaˊn bloqueados dividido por el MintingPeriod\frac{StakingPeriod}{MintingPeriod} = \text{tiempo que los tokens están bloqueados dividido por el $MintingPeriod$} MintingPeriod es un an˜o, configurado por la Red Primaria).\text{$MintingPeriod$ es un año, configurado por la Red Primaria).} TasaDeConsumoEfectiva=TasaDeConsumoEfectiva = MinConsumptionRatePercentDenominator×(1StakingPeriodMintingPeriod)+MaxConsumptionRatePercentDenominator×StakingPeriodMintingPeriod\frac{MinConsumptionRate}{PercentDenominator} \times \left(1- \frac{Staking Period}{Minting Period}\right) + \frac{MaxConsumptionRate}{PercentDenominator} \times \frac{Staking Period}{Minting Period}

Ten en cuenta que StakingPeriodStakingPeriod es el período completo de staking del staker, no solo el tiempo de actividad del staker, es decir, el tiempo agregado durante el cual el staker ha estado receptivo. El tiempo de actividad solo entra en juego para decidir si se debe recompensar a un staker; para calcular la recompensa real, solo se tiene en cuenta la duración del período de staking.

EffectiveConsumptionRateEffectiveConsumptionRate es la tasa a la que se recompensa al validador en función de la selección de StakingPeriodStakingPeriod.

MinConsumptionRateMinConsumptionRate y MaxConsumptionRateMaxConsumptionRate limitan EffectiveConsumptionRateEffectiveConsumptionRate:

MinConsumptionRateEffectiveConsumptionRateMaxConsumptionRateMinConsumptionRate \leq EffectiveConsumptionRate \leq MaxConsumptionRate

Cuanto mayor sea StakingPeriodStakingPeriod, más cercano será EffectiveConsumptionRateEffectiveConsumptionRate a MaxConsumptionRateMaxConsumptionRate. Cuanto menor sea StakingPeriodStakingPeriod, más cercano será EffectiveConsumptionRateEffectiveConsumptionRate a MinConsumptionRateMinConsumptionRate.

Un staker logra la recompensa máxima por su stake si StakingPeriodStakingPeriod = MintingPeriodMinting Period. La recompensa es:

MaxReward=(MaximumSupplySupply)×StakeSupply×MaxConsumptionRatePercentDenominatorMax Reward = \left(MaximumSupply - Supply \right) \times \frac{Stake}{Supply} \times \frac{MaxConsumptionRate}{PercentDenominator}

Ten en cuenta que esta fórmula es la misma que la fórmula de recompensa en la parte superior de esta sección porque EffectiveConsumptionRateEffectiveConsumptionRate = MaxConsumptionRateMaxConsumptionRate.

La fórmula de recompensa anterior se utiliza en la Red Primaria para calcular la recompensa de los stakers. Para referencia, puedes encontrar los parámetros de la red primaria en la sección a continuación.

Verificaciones de peso de los delegadores

Existen límites establecidos para la cantidad máxima de stake de los delegadores que un validador puede recibir.

El peso máximo MaxWeightMaxWeight que un validador ValidatorValidator puede tener es:

MaxWeight=min(Validator.Weight×MaxValidatorWeightFactor,MaxValidatorStake) MaxWeight = \min(Validator.Weight \times MaxValidatorWeightFactor, MaxValidatorStake)

donde MaxValidatorWeightFactorMaxValidatorWeightFactor y MaxValidatorStakeMaxValidatorStake son los parámetros de la Subnet Elástica descritos anteriormente.

Un delegador no se agregará a un validador si la combinación de sus pesos y el peso de todos los otros delegadores del validador es mayor que MaxWeightMaxWeight. Ten en cuenta que esto debe ser cierto en cualquier momento.

Ten en cuenta que establecer MaxValidatorWeightFactorMaxValidatorWeightFactor en 1 deshabilita la delegación, ya que MaxWeight=Validator.WeightMaxWeight = Validator.Weight.

Notas sobre Porcentajes

PercentDenominator = 1_000_000 es el denominador utilizado para calcular porcentajes.

Te permite especificar porcentajes de hasta 4 posiciones decimales. Para denominar tu porcentaje en PercentDenominator, simplemente multiplícalo por 10_000. Por ejemplo:

  • 100% corresponde a 100 * 10_000 = 1_000_000
  • 1% corresponde a 1 * 10_000 = 10_000
  • 0.02% corresponde a 0.002 * 10_000 = 200
  • 0.0007% corresponde a 0.0007 * 10_000 = 7

Parámetros de la Red Primaria en Mainnet

Una Subnet Elástica es libre de elegir cualquier parámetro que afecte las recompensas, dentro de las restricciones especificadas anteriormente. A continuación, enumeramos los parámetros de la Red Primaria en Mainnet:

  • AssetID = Avax
  • InitialSupply = 240_000_000 Avax
  • MaximumSupply = 720_000_000 Avax.
  • MinConsumptionRate = 0.10 * reward.PercentDenominator.
  • MaxConsumptionRate = 0.12 * reward.PercentDenominator.
  • Minting Period = 365 * 24 * time.Hour.
  • MinValidatorStake = 2_000 Avax.
  • MaxValidatorStake = 3_000_000 Avax.
  • MinStakeDuration = 2 * 7 * 24 * time.Hour.
  • MaxStakeDuration = 365 * 24 * time.Hour.
  • MinDelegationFee = 20000, es decir, 2%.
  • MinDelegatorStake = 25 Avax.
  • MaxValidatorWeightFactor = 5. Este es un parámetro de la plataformaVM en lugar de uno de génesis, por lo que se comparte entre redes.
  • UptimeRequirement = 0.8, es decir, 80%.

Was this page helpful?