# Mecanismo de bloqueo de GLM
Octant permite a los titulares de GLM (opens new window) obtener recompensas en ETH mientras apoyan proyectos importantes para ellos.
Desarrollada por la Fundación Golem (opens new window), la plataforma explora las motivaciones detrás del apoyo a los bienes públicos mediante rondas de financiación recurrentes, recompensando la participación activa con ETH.
La Fundación Golem sostiene el proyecto haciendo staking de 100,000 ETH y destinando regularmente una parte de las recompensas generadas. Para participar y recibir fondos, los usuarios deben bloquear un mínimo de 100 tokens GLM en el contrato inteligente de Depósitos.
# Diseño del sistema de bloqueo
El contrato de Depósitos se diseñó buscando la máxima sencillez y minimizando las operaciones con los tokens GLM. Su funcionamiento es transparente y comprensible incluso para usuarios sin experiencia técnica.
El contrato ejecuta únicamente dos operaciones básicas:
- "Lock": bloquea los tokens GLM en el contrato
- "Unlock": devuelve los tokens a la billetera del usuario
El término "bloqueo" se refiere a mantener los tokens en el contrato durante un período determinado. Es importante destacar que esto no constituye staking en el sentido tradicional.
El mecanismo de bloqueo es no-custodial: no agrupa los tokens en pools, no emite tokens LP (Liquidity Pool), ni realiza ninguna otra operación con ellos. Los usuarios mantienen control total sobre sus tokens y pueden desbloquearlos en cualquier momento. Todas las transacciones de bloqueo y desbloqueo son verificables en Etherscan (opens new window).
El contrato tiene una única función: registrar la cantidad de tokens GLM depositados por cada usuario. Este registro determina tanto el poder de voto en el proceso de financiación de bienes públicos como el derecho a recibir recompensas generadas por el ETH en staking de la Fundación Golem.
# Contrato de depósitos
La función de bloqueo ejecuta tres operaciones fundamentales:
- Registra el depósito actual del usuario
- Transfiere los tokens GLM al contrato
- Emite un evento con el registro de las cantidades bloqueadas (actual y anterior)
/// @notice GLM token contract address
ERC20 public immutable glm;
/// ...
/// @notice Lock GLM to enable participation in Octant experiment.
/// This can be done at any time, but it is most capital effective at the end of the epoch.
/// @param amount Amount of GLM to be locked.
function lock(uint256 amount) external {
require(amount != 0, CommonErrors.INVALID_ARGUMENT);
uint256 oldDeposit = deposits[msg.sender];
deposits[msg.sender] = oldDeposit + amount;
require(
glm.transferFrom(msg.sender, address(this), amount),
DepositsErrors.GLM_TRANSFER_FAILED
);
emit Locked(oldDeposit, amount, block.timestamp, msg.sender);
}
La función de desbloqueo realiza las operaciones inversas:
- Reduce el saldo depositado en el contrato
- Devuelve los tokens a la billetera del usuario
- Emite un evento registrando las cantidades bloqueadas (anterior y actual)
/// @notice Unlock GLM. This can be done at any time, but it is most capital effective at the beginning of the epoch.
/// @param amount Amount of GLM to be unlocked.
function unlock(uint256 amount) external {
uint256 oldDeposit = deposits[msg.sender];
require(oldDeposit >= amount, DepositsErrors.DEPOSIT_IS_TO_SMALL);
deposits[msg.sender] = oldDeposit - amount;
require(glm.transfer(msg.sender, amount));
emit Unlocked(oldDeposit, amount, block.timestamp, msg.sender);
}
¡Así de simple!
La versión 1 de Octant incluye además otros contratos inteligentes que gestionan las propuestas de proyectos, las épocas y otras funcionalidades. Puedes explorar el código completo aquí (opens new window). También puedes consultar el informe de auditoría realizado por Least Authority, disponible en su sitio web (opens new window).
# Estrategia de bloqueo
El sistema opera en épocas de 90 días. Durante cada época, se generan recompensas de staking en ETH y se registra la actividad de los tokens GLM bloqueados.
Las recompensas se calculan mediante un promedio ponderado por tiempo: cada usuario recibe recompensas en proporción al tiempo que mantiene sus tokens bloqueados durante la época. Por ejemplo, si un usuario bloquea 100 tokens GLM al inicio de una época y añade 1,000 tokens GLM a mitad de la misma, su poder de voto será equivalente a 600 GLM.
600 GLM = 100 GLM * 1 + 1000 GLM * 0.5
Si se reduce la cantidad bloqueada durante una época, el promedio ponderado por tiempo se ajustará automáticamente al valor más bajo mantenido.
# Maximización de recompensas
Aunque puedes bloquear tokens en cualquier momento, las recompensas aumentan en función del tiempo de bloqueo dentro de la época. Para obtener las máximas recompensas posibles, mantén tus tokens bloqueados durante toda la época de 90 días.
Es importante entender que la ventana de asignación de la época N coincide con las dos primeras semanas de la época N+1. Por ejemplo, la ventana de asignación de la época 2 tiene lugar durante las dos primeras semanas de la época 3. Para optimizar tus recompensas, sigue estas reglas:
- Bloquea tus tokens antes del inicio de la ventana de asignación actual y mantenlos bloqueados hasta la apertura de la siguiente ventana de asignación
- No desbloquees tus tokens temporalmente: cualquier desbloqueo, incluso breve, hará que tus recompensas se calculen basándose en la cantidad mínima mantenida durante el período.
# Fundamentos del sistema
- Las recompensas de cada época se determinan durante su ventana de asignación
- Los tokens bloqueados durante la ventana de asignación de la época N generan recompensas para la época N+1
- El sistema utiliza ponderación temporal: cualquier desbloqueo reduce el promedio ponderado
¿No bastaría con bloquear tokens GLM al inicio de una ventana de asignación y mantener el bloqueo hasta la apertura de la siguiente para maximizar las recompensas?
Al estar implementado en la blockchain de Ethereum, el sistema calcula las recompensas por bloques, no por días. La red Ethereum genera un nuevo bloque aproximadamente cada 12 segundos (opens new window), lo que haría necesaria una sincronización extremadamente precisa para coincidir exactamente con la apertura de la ventana de asignación. Por esta razón, recomendamos bloquear los tokens poco antes de la apertura de la ventana. Nota: La diferencia en recompensas entre bloquear el primer día de la ventana o justo antes de su inicio es mínima para la mayoría de usuarios.
La principal ventaja del sistema es su naturaleza recurrente: cada 90 días, quienes mantienen GLM bloqueado reciben recompensas en ETH. Te recomendamos bloquear tus tokens cuando mejor te convenga y mantenerlos durante el número de épocas que consideres apropiado. Recuerda: ¡cada época genera nuevas recompensas!