Operaciones del Pool de Staking
Este documento describe cómo realizar operaciones del pool de staking. Nota que un pool de staking solo puede aceptar stake del propietario del pool de stake. Solo puedes hacer stake cuando cumples el requisito mínimo de staking.
Ver también las instrucciones relacionadas de Operaciones del Pool de Delegación para aceptar stake de múltiples delegadores para alcanzar el requisito mínimo de staking.
Inicializar un pool de staking
Sección titulada «Inicializar un pool de staking»Antes de inicializar un pool de staking, asegúrate de que haya una cuenta propietaria existente con 1 Millón APT.
- Inicializa el CLI de Aptos con una clave privada de una cuenta existente, como una billetera, o crea una nueva cuenta.
aptos init --profile mainnet-owner \ --network mainnet
Puedes ya sea ingresar la clave privada de una billetera existente, o crear una nueva dirección de billetera.
- Ejecuta el siguiente comando para inicializar el pool de staking:
aptos stake create-staking-contract \ --operator <operator-address> \ --voter <voter-address> \ --amount 100000000000000 \ --commission-percentage 10 \ --profile mainnet-owner
- Una vez que el pool de staking haya sido inicializado, puedes proceder a conectarte a la Red de Aptos.
Realizar operaciones del propietario del pool
Sección titulada «Realizar operaciones del propietario del pool»Transferir moneda entre cuentas
Sección titulada «Transferir moneda entre cuentas»aptos account transfer \ --account <operator-address> \ --amount <amount> \ --profile mainnet-owner
Cambiar operador
Sección titulada «Cambiar operador»aptos stake set-operator \ --operator-address <new-operator-address> \ --profile mainnet-owner
Cambiar votante
Sección titulada «Cambiar votante»aptos stake set-delegated-voter \ --voter-address <new-voter-address> \ --profile mainnet-owner
Agregar stake
Sección titulada «Agregar stake»aptos stake add-stake \ --amount <amount> \ --profile mainnet-owner
Aumentar lockup de stake
Sección titulada «Aumentar lockup de stake»aptos stake increase-lockup --profile mainnet-owner
Desbloquear stake
Sección titulada «Desbloquear stake»aptos stake unlock-stake \ --amount <amount> \ --profile mainnet-owner
Retirar stake
Sección titulada «Retirar stake»aptos stake withdraw-stake \ --amount <amount> \ --profile mainnet-owner
Actualizar comisión
Sección titulada «Actualizar comisión»aptos move run --function-id 0x1::staking_contract::update_commission \ --args address:<operator_address> u64:<commission_percentage> \ --profile mainnet-owner
Establecer direcciones beneficiarias para operadores
Sección titulada «Establecer direcciones beneficiarias para operadores»Los operadores del pool de staking pueden establecer direcciones beneficiarias para recibir la comisión del operador ganada por el pool de staking.
-
Las direcciones beneficiarias pueden establecerse por el operador usando el siguiente comando:
Ventana de terminal aptos move run --profile mainnet_operator \--function-id 0x1::staking_contract::set_beneficiary_for_operator \--args address:<new_beneficiary_address> -
Para ver la dirección beneficiaria establecida para el operador, usa el siguiente comando:
Ventana de terminal aptos move view --url <REST API for the network> \--function-id 0x1::staking_contract::beneficiary_for_operator \--args address:<operator_address>
Cualquier recompensa de comisión no pagada existente será pagada al nuevo beneficiario. Para asegurar el pago al beneficiario actual, uno debería primero llamar distribute
antes de cambiar el beneficiario. En caso de que un operador opere múltiples pools de staking, el operador puede establecer un beneficiario para todos los pools de staking, no uno separado para cada pool.
Una vez que la dirección beneficiaria esté establecida, ya sea el operador o el beneficiario puede solicitar la comisión del operador por request_commission
.
Verificar información de tu pool de stake
Sección titulada «Verificar información de tu pool de stake»Para verificar los detalles de tu pool de stake, ejecuta el comando CLI abajo con la opción get-stake-pool
proporcionando los campos --owner-address
y --url
.
El comando abajo es para una dirección propietaria de ejemplo e7be097a90c18f6bdd53efe0e74bf34393cac2f0ae941523ea196a47b6859edb
.
aptos node get-stake-pool \ --owner-address e7be097a90c18f6bdd53efe0e74bf34393cac2f0ae941523ea196a47b6859edb \ --profile mainnet-operator
Salida de ejemplo:
{ "Result": [ { "state": "Active", "pool_address": "25c3482850a188d8aa6edc5751846e1226a27863643f5ebc52be4f7d822264e3", "operator_address": "3bec5a529b023449dfc86e9a6b5b51bf75cec4a62bf21c15bbbef08a75f7038f", "voter_address": "3bec5a529b023449dfc86e9a6b5b51bf75cec4a62bf21c15bbbef08a75f7038f", "pool_type": "StakingContract", "total_stake": 100525929489123, "commission_percentage": 10, "commission_not_yet_unlocked": 15949746439, "lockup_expiration_utc_time": "2022-10-07T07:12:55Z", "consensus_public_key": "0xb3a7ac1491b0165f08f136c2b02739846b6610084984d5298c2983c4f8e5553284bffca2e3fe2b99167da82717501732", "validator_network_addresses": [ "/ip4/35.91.145.164/tcp/6180/noise-ik/0xeddf05470520af91b847f353dd804a04399e1213d130a4260e813527f2c49262/handshake/0" ], "fullnode_network_addresses": [], "epoch_info": { "epoch": 594, "epoch_interval_secs": 3600, "current_epoch_start_time": { "unix_time": 1665087178789891, "utc_time": "2022-10-06T20:12:58.789891Z" }, "next_epoch_start_time": { "unix_time": 1665090778789891, "utc_time": "2022-10-06T21:12:58.789891Z" } } } ]}
Descripción de campos de salida
Sección titulada «Descripción de campos de salida»state
- “Active”: El validator ya está en el conjunto de validators y proponiendo.
- “Pending_active”: El validator será agregado al conjunto de validators en la siguiente época. **No trates de unirte al conjunto de validators otra vez antes de la llegada de la siguiente época, o recibirás un error. **
pool_address
- Usa esta “pool_address” (no la dirección del operador) en tu archivo
validator.yaml
. Si por error usaste la dirección del operador, recibirás el mensaje: “Validator not in validator set”.
commission_percentage
-
Esto solo puede establecerse por el propietario del pool de stake. El operador recibe el “commission_percentage” de las recompensas de staking generadas. Si solicitas la comisión (puedes hacerlo ejecutando el comando
aptos stake request-commission
), entonces al final dellockup_expiration_utc_time
la parte de comisión de las recompensas irá a la dirección del operador mientras el resto permanecerá en el pool de stake y pertenecerá al propietario. Aquí “la parte de comisión de las recompensas” significa el valor de commission_not_yet_unlocked.Por ejemplo, en un escenario con un lock-up de un mes, llamas
aptos stake request-commission
cada mes. Esto pagará la comisión que se acumuló durante el mes anterior pero solo cuando se desbloquee al final del mes anterior. Independientemente de cuán seguido ejecutesaptos stake request-commission
durante el mes, la comisión solo se paga al completarselockup_expiration_utc_time
.
commission_not_yet_unlocked
- La cantidad de comisión (cantidad de APT) que aún no está desbloqueada. Se desbloqueará en el
lockup_expiration_utc_time
. Esta es la cantidad total de comisión disponible para el operador, es decir, las recompensas de staking solo para el operador. Esto no incluye las recompensas de staking para el propietario.
lockup_expiration_utc_time
- La fecha cuando la comisión se desbloqueará. Sin embargo, esta comisión desbloqueada no será auto-desembolsada. Solo se desembolsará cuando el comando
aptos stake request-commission
sea llamado otra vez.
epoch_info
- Usa Epoch Converter o una herramienta similar para convertir el
unix_time
en tiempo legible por humanos.
Solicitar comisión
Sección titulada «Solicitar comisión»Ya sea un propietario, un operador o el beneficiario del operador puede solicitar comisión. Debes solicitar comisión dos veces, una vez antes del final del período de lockup y una segunda vez después de que el período de lockup termine, es decir, al final de lockup_expiration_utc_time, ejecutando el comando aptos stake request-commission
. Asegúrate de proporcionar las direcciones del operador y del propietario. Ver un comando de ejemplo abajo:
aptos stake request-commission \ --operator-address 0x3bec5a529b023449dfc86e9a6b5b51bf75cec4a62bf21c15bbbef08a75f7038f \ --owner-address 0xe7be097a90c18f6bdd53efe0e74bf34393cac2f0ae941523ea196a47b6859edb \ --profile mainnet-operator
Cuando ejecutes el comando aptos stake request-commission
antes del final de la expiración del lockup, el comando iniciará el desbloqueo para cualquier comisión bloqueada ganada hasta ese momento en el tiempo. La comisión permanecerá en pending_inactive
hasta el final del período de lockup, continuará ganando recompensas hasta que el período de lockup expire. La comisión no será retirable hasta después del final del período de lockup, cuando aptos stake request-commission
sea llamado una segunda vez.
Ver ejemplo abajo:
Mes 1 Día 29, llamas el comando, iniciaría desbloqueo para 29 días de comisión.
Mes 2, Día 29, si llamas el comando otra vez, desembolsaría la comisión completamente desbloqueada del mes anterior (29 días de valor), e iniciaría desbloqueo de comisión para Mes 1 Día 30 + Mes 2 Día 1-29 (30 días de valor).
Mes 3, Día 29, si llamas la comisión otra vez, 30 días de comisión serían desembolsados, y un nuevo lote de comisión iniciaría desbloqueo.
Puedes llamar el comando múltiples veces, y la cantidad que recibes depende del día cuando solicitaste desbloqueo de comisión previamente.
La comisión se desbloquea cuando se llama request-commission
, el staker desbloquea stake, o el staker cambia operador.
Verificar tu rendimiento de validator
Sección titulada «Verificar tu rendimiento de validator»Para ver tu rendimiento de validator en las épocas actuales y pasadas y las recompensas ganadas, ejecuta el comando abajo. La salida mostrará el rendimiento del validator en propuestas de bloques, y en votación de gobernanza y propuestas de gobernanza. Se usan valores por defecto en el comando abajo. Escribe aptos node get-performance --help
para ver valores por defecto usados.
aptos node get-performance \ --pool-address <pool address> \ --profile mainnet-operator
Salida de ejemplo:
{ "Result": { "current_epoch_successful_proposals": 56, "current_epoch_failed_proposals": 0, "previous_epoch_rewards": [ "12312716242", "12272043711", "12312912674", "12313011054", "12313109435", "12180092056", "12313305136", "12313403519", "12313501903", "12313600288" ], "epoch_info": { "epoch": 68, "epoch_interval": 3600000000, "last_epoch_start_time": { "unix_time": 1665074662417326, "utc_time": "2022-10-06T16:44:22.417326Z", "local_time": "Thu Oct 6 16:44:22 2022" }, "next_epoch_start_time": { "unix_time": 1665078262417326, "utc_time": "2022-10-06T17:44:22.417326Z", "local_time": "Thu Oct 6 17:44:22 2022" } } }}
Descripción de campos
Sección titulada «Descripción de campos»current_epoch_successful_proposals
- Propuestas exitosas de líder-validator durante la época actual. También ver Validación en la blockchain de Aptos para la distinción entre líder-validator y el voter-validator.
previous_epoch_rewards
- Una lista ordenada de recompensas ganadas (cantidades APT) para las 10 épocas anteriores, comenzando con la 10 época en el pasado. En el ejemplo anterior, una recompensa de 12312716242 APT fue ganada hace 10 épocas y una recompensa de 12313600288 APT fue ganada en la época más reciente. Si una recompensa es 0 para cualquier época, entonces:
- Ya sea el validator no era parte del conjunto de validators en esa época (podría haber estado en estado de validator inactivo o pending_active), o
- El validator perdió todas las propuestas de líder.
Verificar el rendimiento para todas las épocas
Sección titulada «Verificar el rendimiento para todas las épocas»Para verificar el rendimiento de todas las épocas desde el génesis, ejecuta el comando abajo. Puedes filtrar los resultados para tu dirección de pool con grep
, como se muestra abajo:
aptos node analyze-validator-performance \ --analyze-mode detailed-epoch-table \ --profile mainnet-operator \ --start-epoch 0 | grep <pool address>
Rastrear recompensas
Sección titulada «Rastrear recompensas»DistributeEvent
se emite cuando hay una transferencia de staking_contract al
operador o staker (propietario). Las recompensas pueden rastrearse ya sea escuchando a
DistributeEvent
o usando la función View
para llamar staking_contract_amounts
. Esto devolverá accumulated_rewards
y commission_amount
.