Selene Chain
Selene Chain es una demostración en vivo del secuenciador programable en cadena de Syndicate.
Selene Chain es una demostración en vivo de un secuenciador programable en cadena gobernado por ciclos naturales–en este caso, las fases de la luna. Al anclar la secuenciación de transacciones a los ciclos lunares, Selene elimina la intervención manual y permite un sistema que es tanto autónomo como intencionadamente opinativo.
Construido sobre la infraestructura de Syndicate, Selene muestra cómo la lógica de secuenciación puede ser expresiva, basada en el tiempo y completamente en cadena, desbloqueando nuevas posibilidades para permisos, ordenamiento y reglas de transacción personalizadas.

Captura de pantalla: Interfaz de demostración de Selene Chain, mostrando indicaciones de transacción basadas en las fases lunares.
Cómo funciona: Ciclo de vida de la transacción
- Envío: Un usuario envía una transacción a través de la interfaz de demostración de Selene.
- Secuenciación: El módulo secuenciador en cadena determina la fase lunar actual y aplica la regla correspondiente a la transacción.
- Validación: Si la transacción coincide con los criterios de la fase activa, se secuencia y se incluye en la cadena. Si no, es rechazada y registrada.
- Retroalimentación: Los usuarios ven retroalimentación inmediata—ya sea un hash de transacción para éxito o un mensaje de rechazo. Todos los intentos rechazados se almacenan en una base de datos PostgreSQL para transparencia y análisis.
Módulo de secuenciación: Permisos de fase lunar
En el secuenciador programable de Syndicate, los módulos son componentes conectables que definen cómo se seleccionan, ordenan e incluyen las transacciones en la cadena. La demostración de Selene implementa un módulo de secuenciación enfocado en permisos personalizado. Todas las reglas de inclusión de transacciones son definidas y aplicadas en cadena por el secuenciador. Cada fase lunar activa un conjunto distinto de reglas de permisos. Por ejemplo, solo se permiten transacciones de bajo valor durante la Luna Menguante.
Esto demuestra cómo los desarrolladores pueden usar Syndicate para construir infraestructura autónoma y expresiva con políticas de transacción dinámicas basadas en fases, aplicadas directamente en la capa de protocolo.
Cálculo de fase lunar y reglas
El módulo calcula la fase lunar actual a partir de una marca de tiempo, asignándola a uno de 8 conjuntos de reglas.
Fórmula:
/// @notice Computes the phase index for a given timestamp
/// @param timestamp The timestamp to compute the phase index for
/// @return phaseIndex The phase index
function getPhaseIndex(uint256 timestamp) internal pure returns (uint8 phaseIndex) {
// Known new moon: Jan 6, 2000 at 18:14 UTC
uint256 synodicMonth = 2551443; // seconds in a synodic month (~29.5306 days)
uint256 newMoonReference = 947182440; // reference new moon timestamp
uint256 elapsed = timestamp - newMoonReference;
uint256 phaseTime = elapsed % synodicMonth;
// Calculate the phase from 0 to 29
return uint8((phaseTime * 30) / synodicMonth);
}Luego pasamos el phaseIndex a la función getPhaseName para devolver el nombre de la
fase lunar:
function getPhaseName(uint8 phase) internal pure returns (string memory name) {
if (phase == 0 || phase == 29) return "New Moon";
if (phase >= 1 && phase <= 6) return "Waxing Crescent";
if (phase == 7) return "First Quarter";
if (phase >= 8 && phase <= 13) return "Waxing Gibbous";
if (phase >= 14 && phase <= 15) return "Full Moon";
if (phase >= 16 && phase <= 21) return "Waning Gibbous";
if (phase == 22) return "Last Quarter";
if (phase >= 23 && phase <= 28) return "Waning Crescent";
}Tabla de reglas:
| Fase lunar | Descripción de la regla |
|---|---|
| Luna nueva | Prefiere tamaño bajo de calldata |
| Creciente | Solo transmite a un contrato permitido |
| Cuarto creciente | Requiere donación de número angelical (p. ej., 111, 333, etc.) |
| Gibosa creciente | Solo permite llamadas a funciones a waxingGibbous() |
| Luna llena | Solo permite interacciones de tokens (ERC20, ERC721, ERC1155) |
| Gibosa menguante | Requiere límite alto de gas (≥ 21k) |
| Cuarto menguante | Impone una relación de límite calldata/gas ≥ 16 |
| Menguante | Solo permite transacciones de bajo valor (≤ 0.01 ETH) |
Cada una de estas reglas está implementada en MoonphasePermissionModule.sol y se aplica en la capa de secuenciación.
Arquitectura de demostración y stack tecnológico
Selene Chain está construida con una arquitectura modular y extensible que demuestra cómo la lógica de fase lunar puede aplicarse en la cadena y mostrarse en una aplicación web moderna. Así es como encajan las piezas:
-
Secuenciador: secuenciación descentralizada en cadena
-
Módulo de secuenciación: toda la lógica de fase lunar se aplica en cadena mediante módulos Solidity (
MoonphasePermissionModule.sol), que determinan la validez de la transacción basándose en la fase actual. -
Frontend: Construido con Next.js, TypeScript y Tailwind CSS, la interfaz de usuario proporciona indicaciones interactivas y retroalimentación en tiempo real a los usuarios.
-
Backend: Utiliza PostgreSQL para el registro de transacciones y Drizzle ORM para el acceso a la base de datos.
-
Desarrollo y pruebas: Se utiliza Foundry para el desarrollo y pruebas de contratos.
Comenzar
¿Listo para construir tu appchain con Syndicate?
- Explora el código fuente para entender la arquitectura y extender el módulo
- Ver módulos de secuenciación en cadena para comenzar a personalizar el ordenamiento, permisos y mecanismos económicos para tu propia appchain
- Contacta al equipo de Syndicate para obtener soporte o compartir tus experimentos!