1. Introducción y motivación
Fondo
La plataforma EQTY se basa en una arquitectura de doble capa:
Una capa privada para gestionar cadenas de eventos verificables (por ejemplo, Ownables, mensajes)
Una capa de anclaje pública para sellar y verificar esas cadenas de eventos en una blockchain inmutable
Históricamente, esta capa pública fue proporcionada por LTO Network Layer 1, una blockchain dedicada de Proof-of-Stake optimizada para el anclaje.
Sin embargo, el contexto operativo ha cambiado significativamente.
Por qué LTO Layer 1 debe ser deprecado
1. La seguridad económica ha colapsado
LTO actualmente tiene una capitalización de mercado inferior a $5M, con solo ~20% de los tokens apostados.
Esto significa que el presupuesto de seguridad efectivo (es decir, el valor total que asegura el consenso) es < $1M.
A estos niveles, es financieramente viable para un actor malicioso comprometer el consenso, censurar transacciones de anclaje o reescribir la historia.
Para una plataforma como EQTY — que ancla registros de activos legalmente exigibles — esto es inaceptable.
2. Centralización de validadores e incentivos bajos
Los nodos comunitarios ya no son viables económicamente.
Los nodos que terminan el servicio podrían llevar a un pequeño conjunto de nodos a tener un control desproporcionado sobre el consenso.
Esto socava las garantías de descentralización que el anclaje está destinado a proporcionar.
3. Fricción de adopción
Es cada vez más difícil justificar a LTO como una capa de anclaje segura en conversaciones de ventas o auditoría.
Los clientes y socios esperan que EQTY ancle en redes públicas ampliamente adoptadas y creíbles (por ejemplo, Ethereum, Base).
La percepción de “anclar a una Capa 1 de $5M” debilita la confianza en la infraestructura central de EQTY.
4. Fragilidad de la infraestructura
Si incluso unos pocos validadores clave se desconectan, LTO se vuelve inestable o se detiene por completo.
El mantenimiento continuo (exploradores, indexadores, infraestructura de nodos) añade sobrecarga con valor decreciente.
Por qué Base es la capa de anclaje adecuada
Base ofrece:
Compatibilidad total con EVM
Seguridad económica y técnica heredada de Ethereum
Amplio soporte de herramientas (MetaMask, WalletConnect, The Graph, etc.)
Tarifas casi nulas con rápida finalización
Cercana alineación con la capa de activos y liquidez de EQTY, que también reside en Base
El anclaje a Base elimina la carga de mantener una Capa 1 personalizada al tiempo que aumenta la auditabilidad, composabilidad y confianza.
Motivación estratégica
El valor de EQTY no está en el consenso — está en su capa privada, modelo de activos y arquitectura de cumplimiento.
Mantener una Capa 1 ofrece poco beneficio estratégico a alto costo.
Pasar a Base permite a EQTY centrarse completamente en la adopción del producto, la integración legal y la tokenización de activos, sin ser arrastrado por la infraestructura de Capa 1.
2. Nuevo token $EQTY ERC-20
La plataforma EQTY introducirá un nuevo token ERC-20, $EQTY, desplegado en la red Base. Este token reemplaza al token LTO y sirve como la moneda nativa para las operaciones del protocolo, incluyendo el anclaje y la gobernanza.
El contrato de token comienza con suministro cero. $EQTY se acuña bajo demanda cuando los usuarios intercambian sus tokens LTO durante un período de migración limitado. Esta ventana se aplica en cadena: después de una altura de bloque predefinida, la función de acuñación se desactiva permanentemente. Cualquier token LTO no convertido antes de este corte queda excluido del ecosistema de EQTY, y el suministro final de $EQTY será menor que el suministro original de LTO.
El contrato de token es deliberadamente mínimo. Sigue la interfaz estándar de ERC-20, sin lógica de transferencia especial, características de airdrop o cronogramas de vesting.
El token $EQTY se utilizará para pagar tarifas de anclaje, participar en la gobernanza del protocolo y potencialmente apoyar roles de utilidad adicionales a medida que la plataforma evoluciona. La utilidad requiere que los tokens sean quemados, reduciendo el suministro total.
3. Contrato de anclaje en Base
El anclaje se realizará a través de un contrato inteligente ligero desplegado en la red Base. Este contrato emite eventos que registran públicamente el hash de cadenas de eventos o mensajes, sin almacenar ningún estado en cadena.
Cada anclaje mapea una clave a un valor, donde:
Para cadenas de eventos: clave = stateHash, valor = eventHash
Para mensajes: clave = messageHash, valor = 0x0
Interfaz
struct Anchor {
bytes32 clave;
valor bytes32;
}
function anchor(Anchor[] calldata anchors) external;
evento Anclado(
bytes32 clave indexada,
valor bytes32,
dirección remitente indexada,
uint64 selloTiempo
);
Comportamiento
El contrato emite un evento Anclado por cada par (clave, valor).
El timestamp actual del bloque se incluye en el evento como un campo separado por conveniencia y auditabilidad.
No se almacena estado en el contrato. Todos los datos de anclaje se registran solo a través de registros.
El contrato es sin permisos: cualquiera puede anclar.
Estos eventos están diseñados para ser indexables y accesibles por:
Componentes internos, como el indexador oBridge y la plataforma EQTY
Servicios externos, incluyendo The Graph, Infura o verificadores personalizados
Al mantener el anclaje sin estado y emitir eventos completos, este diseño asegura que el anclaje sea verificable, eficiente e independiente de la infraestructura.
Mecanismo de tarifas
Los clientes necesitan llamar a approve() en el contrato ERC20 para habilitar el anclaje
Cada anclaje incurre en una quema de $EQTY, impuesta en la función anchor()
La cantidad de la tarifa se lee de un contrato de configuración separado controlado por la gobernanza
El anclaje no utilizará approve() sino que quemará a través de eqtyToken.burnFrom(msg.sender, fee * n)
4. Gobernanza de tarifas
Para mantener el anclaje económicamente sostenible y justo a lo largo del tiempo, la tarifa pagada en $EQTY por anclaje debe ser ajustable. En lugar de codificar una tarifa estática o depender de oráculos de precios, EQTY utilizará un modelo de gobernanza en cadena para controlar este parámetro de manera transparente y descentralizada.
Un contrato de configuración dedicado almacenará la tarifa de anclaje actual. Este valor solo puede ser actualizado por un contrato de gobernanza: específicamente, una instancia del Gobernador de OpenZeppelin vinculada al token $EQTY. Los votos se emitirán en función de los saldos de $EQTY utilizando la lógica estándar de ERC20Votes.
El contrato de anclaje lee la tarifa actual del contrato de configuración controlado por la gobernanza cada vez que se llama a anchor(). Luego quema la cantidad apropiada de $EQTY directamente del saldo del remitente. Este enfoque evita la necesidad de transacciones approve() y asegura que el contrato de anclaje permanezca ligero y sin estado más allá de la imposición de tarifas.
El modelo de gobernanza permite a la comunidad ajustar las tarifas a lo largo del tiempo en respuesta a las condiciones del mercado, fluctuaciones de precios de tokens o cambios en la demanda de anclaje, sin depender de fuentes de datos externas o control centralizado.
5. Nueva biblioteca de capa privada
Para apoyar el anclaje en Base y la firma nativa de billetera, se creará una nueva biblioteca independiente de TypeScript para manejar la lógica de la capa privada, incluyendo cadenas de eventos, firma de eventos, anclaje y estructuras de mensajes de retransmisión. Esta biblioteca reemplaza la @ltonetwork/lto-api.js específica de LTO para todos los casos de uso de EQTY.
La nueva biblioteca está diseñada para ser utilizada tanto en entornos de navegador (por ejemplo, MetaMask, WalletConnect) como en herramientas del lado del servidor.
Alcance y contenidos
Solo se incluirán los componentes relevantes de la capa privada LTO:
eventos/ Incluye Event, EventChain, MergeConflict y lógica de serialización relacionada.
mensaje/ Incluye Message y Relay, utilizados para comunicación cifrada fuera de cadena.
Código de soporte Incluye clases de utilidad como Binary.
La biblioteca no tendrá dependencia de LTO Network:
Sin API de nodo LTO
Sin lógica de transacción
Sin herramientas de generación de pares de claves
Sin codificación de dirección específica de LTO
Apoyará el anclaje a través de contratos inteligentes en Base, e integrará cleanly con ethers.js para firmar y enviar anclajes.
Modelo de firma de eventos
El método Event.signWith() se hará asincrónico para admitir la firma basada en navegador a través de MetaMask, WalletConnect o cualquier firmante externo, además de firmar directamente con ethers. Utiliza una interfaz ISigner abstracta:
interfaz ISigner {
sign(data: Uint8Array): Promise<Uint8Array>;
}
El evento firmado ya no requiere una clave pública; solo incluye la firma y la dirección derivada. Esto lo hace compatible con flujos de firma de Ethereum (personal_sign) y elimina la necesidad de extraer claves públicas, lo cual no es posible en la mayoría de los entornos de billetera.
Integración de anclaje
La biblioteca incluye un método para generar mapas de anclaje:
const anchors = chain.from(lastKnownEvent.hash).getAnchorMap();
Cada anclaje mapea un stateHash (clave) a un lastEventHash (valor), listo para ser enviado al contrato inteligente de Base. Para mensajes de retransmisión, el hash del mensaje en sí se utiliza como la clave de anclaje, y el valor se establece en cero (0x0).
El anclaje se puede realizar llamando directamente al contrato inteligente a través de ethers.Contract.anchor(Anchor[]). Esto evita la dependencia de cualquier servicio backend o infraestructura propietaria.
Firma de mensajes
La biblioteca también incluye clases Message y Relay para comunicación fuera de cadena. Al igual que los eventos, los mensajes se firman de forma asíncrona utilizando la interfaz ISigner. Las firmas son sobre el hash del mensaje, y no se incluye clave pública alguna: solo se utiliza la dirección derivada para la verificación.
Después de firmar, el hash del mensaje se ancla en cadena a través del mismo contrato Anchor. El formato es:
clave = messageHash
valor = 0x0
Esto asegura que los mensajes fuera de cadena puedan ser sellados públicamente y verificados sin revelar su contenido. El anclaje puede ser realizado por el remitente o el servicio de retransmisión.
Despliegue y uso
La biblioteca se publicará como un paquete NPM separado. Está destinada a ser el núcleo compartido utilizado por:
La billetera EQTY (para la firma de eventos y mensajes)
El servicio de retransmisión (para cálculo de hash y análisis de mensajes)
El SDK de Ownables (para la construcción y presentación de eventos)
Cualquier frontend o verificador de terceros
6. Indexación oBridge
El servicio de oBridge reemplazará su lógica actual de indexación basada en LTO con un nuevo indexador que procesa eventos Anclados emitidos por el contrato de anclaje de Base.
Este indexador escucha los registros de anclaje en Base y mantiene una base de datos local del anclaje más reciente por clave, que puede representar ya sea un estado de cadena de eventos o un hash de mensaje de retransmisión. Cada entrada incluye:
clave: el estado anclado o hash del mensaje
valor: el hash del evento correspondiente o 0x0
txHash, númeroBloque, logIndex y remitente
Estos registros se exponen a través de una API HTTP pública. La estructura y el comportamiento de esta API seguirán siendo compatibles con el indexador de anclaje LTO existente, incluyendo el endpoint GET /hash/verify, permitiendo que los componentes EQTY existentes se transicionen con cambios mínimos.
El indexador oBridge cumple dos roles:
Como una dependencia interna para el servicio de retransmisión, que debe verificar que los mensajes han sido anclados antes de liberarlos.
Como un servicio de verificación pública para clientes externos y billeteras que desean comprobar el estado de anclaje sin consultar a Base directamente.
Todos los datos permanecen verificables en cadena, y los clientes pueden eludir oBridge si lo desean utilizando eth_getLogs o su propio indexador.
7. Servicio de retransmisión
El servicio de retransmisión maneja la entrega segura de mensajes cifrados entre partes. Para garantizar que los mensajes sean auténticos, con sello de tiempo y controlados por acceso, el servicio se actualizará para admitir tanto la validación de anclaje en cadena como la autenticación moderna y nativa de billetera usando Sign-In with Ethereum (SIWE).
Autenticación de mensajes con SIWE
En lugar de confiar en firmas de mensajes HTTP o desafíos personalizados, el relay implementará el estándar SIWE (EIP-4361). Este enfoque permite a los usuarios autenticarse firmando un mensaje de texto estándar con su billetera de Ethereum, produciendo una firma recuperable que los vincula a una sesión.
Flujo de inicio de sesión:
El cliente solicita un mensaje SIWE del backend de retransmisión: GET /auth/siwe-message?address=0x...
El servidor devuelve un mensaje estándar SIWE que incluye:
Dominio (por ejemplo, relay.eqty.network)
Nonce
Sello de tiempo de expiración
Campo de recursos opcional limitado a /messages?to=...
Declaración: por ejemplo, “Inicia sesión para acceder a tus mensajes EQTY.”
El cliente firma el mensaje utilizando personal_sign
El cliente envía el mensaje firmado y la firma a POST /auth/verify
El servidor verifica la firma y emite:
Un token de acceso JWT (de corta duración, por ejemplo, 15 minutos)
Un token de actualización (de mayor duración, por ejemplo, 24 horas)
Todas las solicitudes de recuperación de mensajes subsiguientes (GET /messages?to=...) deben incluir el token de acceso en el encabezado de autorización.
Cuando el token expire, el cliente puede usar el token de actualización para obtener un nuevo token de acceso sin necesidad de volver a firmar.
Este modelo es totalmente compatible con MetaMask, WalletConnect y otras billeteras EIP-1193, y sigue patrones de seguridad ampliamente adoptados. No se requiere lógica o infraestructura personalizada más allá de las bibliotecas existentes de SIWE.
Anclaje y verificación de mensajes
Además de la autenticación, el servicio de retransmisión validará que cada mensaje haya sido anclado en cadena antes de entregarlo. El anclaje proporciona inmutabilidad, sellado de tiempo y previene ataques de spam o repetición.
El relay mantiene su propio indexador ligero para el contrato de anclaje en Base. Escucha eventos Anclados y registra:
clave = messageHash
valor = 0x0
remitente
númeroBloque, txHash, selloTiempo
Para verificar un mensaje antes de la entrega, el relay verifica que:
Un evento Anclado existe con clave = messageHash
El valor es exactamente 0x0 (es decir, no es un anclaje de cadena de eventos)
El remitente coincide con el firmante del mensaje (es decir, dirección de origen)
Solo después de un anclaje exitoso se libera el mensaje al destinatario. Esto asegura que todos los mensajes sean públicamente verificables, sellados temporalmente en Base y anclados por la identidad correcta.
El relay realiza esta verificación utilizando su propio indexador interno y no depende de oBridge.
8. Cambios en el contrato Ownable (CosmWasm)
Con la migración lejos de LTO Layer 1 y la deprecación de la firma de eventos basada en clave pública, los contratos Ownable deben actualizarse para admitir la autorización basada en dirección utilizando direcciones estándar de Ethereum.
Autorización basada en dirección
Anteriormente, la verificación de propiedad dependía de recuperar y comparar claves públicas extraídas de eventos firmados. Dado que las billeteras de Ethereum no exponen claves públicas, y las firmas ahora utilizan personal_sign (recuperable a una dirección), el modelo de verificación debe cambiar a comparar direcciones directamente.
La lógica de contrato actualizada utiliza info.sender: la dirección que firmó y presentó el evento como la identidad autoritativa.
Esto afecta todos los puntos de entrada donde se requiere autorización:
try_transfer: el remitente debe coincidir con la dirección del propietario actual
try_release: el remitente debe coincidir con la dirección del propietario bloqueado anterior
try_register_lock: verifica que el campo propietario del evento coincida con el firmante
En lugar de convertir claves públicas en direcciones LTO, el contrato simplemente almacena y compara valores Addr (por ejemplo, 0xabc123...).
CAIP-2 y coincidencia de red
El contrato continúa validando el origen de los eventos de cadena cruzada utilizando el identificador de red CAIP-2. Para mensajes basados en Ethereum, el espacio de nombres es eip155:<chainId>. El contrato verifica que:
La event.network coincide con la red esperada
El campo propietario en el evento coincide con el firmante (info.sender) bajo el espacio de nombres CAIP dado
Las funciones de conversión address_lto() y address_eip155() se pueden eliminar, ya que ya no se necesita traducción hacia o desde direcciones LTO.
Impacto
Este cambio hace que el contrato Ownable sea:
Totalmente compatible con la firma y la identidad nativas de Ethereum
Independiente de la infraestructura de claves LTO
Compatible con cualquier cadena que soporte recuperación basada en dirección (por ejemplo, EVM)
Los Ownables existentes, que dependen de la firma y anclaje específicas de LTO, se volverán no verificables bajo el nuevo modelo y deben ser reemitidos (ver Sección 11).
9. Actualización del SDK de Ownables
El SDK de Ownables debe actualizarse para reflejar el cambio de la firma de clave pública basada en LTO a la autorización basada en dirección de estilo Ethereum y anclaje en Base.
Actualizaciones clave
Firma de eventos
Actualizar la creación de eventos para utilizar la nueva biblioteca de capa privada (@eqty-core/events)
Utilizar implementaciones de ISigner compatibles con MetaMask, WalletConnect o firmantes basados en ethers
Asegúrate de que signWith() ya no dependa de una clave pública; solo se utiliza la dirección recuperable
Anclaje
Reemplazar la lógica de anclaje de nodo LTO con presentación de contrato inteligente en Base
Utilizar getAnchorMap() para recopilar pares (clave, valor) y enviarlos a través de ethers.Contract.anchor()
Asegurar que el anclaje de mensajes use (clave = messageHash, valor = 0x0)
Verificación
Actualizar la lógica de verificación para usar la API compatible con oBridge /hash/verify o una consulta directa de registros
Confirma que el valor del ancla coincida con el hash del evento esperado y que el remitente coincida con la dirección de Ethereum del firmante
Uso de direcciones
Reemplaza cualquier lógica que compare o genere direcciones LTO
Utiliza direcciones Ethereum simples (0x...) en todo el flujo de eventos y mensajes
Compatibilidad
El SDK actualizado permanece estructuralmente similar pero ya no está vinculado a la biblioteca @ltonetwork/lto-api.js o los servicios de nodos LTO. Es compatible con la nueva biblioteca de capa privada y el anclaje en Base, y funcionará en conjunto con los contratos Ownable actualizados y el servicio de retransmisión.
10. Actualización de la Billetera Universal
La billetera universal debe actualizarse para reflejar la migración a Base y la nueva arquitectura EQTY. Ya no interactúa con nodos LTO.
Actualizaciones centrales
Conexión de billetera
Reemplazar el manejo de pares de claves LTO con una biblioteca compatible con Ethereum (ethers.js)
Utilizar interfaces de proveedor EIP-1193 para habilitar la firma y recuperación de direcciones
Soporte de token
Agregar soporte para mostrar y administrar saldos del nuevo token $EQTY ERC-20 en Base
Incluir metadatos del token, historial y seguimiento de saldos a través de puntos finales RPC públicos
Firma de eventos y mensajes
Integra la nueva biblioteca de capa privada para permitir a los usuarios crear y firmar cadenas de eventos y mensajes
Utiliza personal_sign a través de la billetera conectada; ya no se requieren claves públicas
Anclaje
Enviar mapas de anclaje directamente al contrato de anclaje de Base utilizando ethers.js
Manejar la presentación en cadena, confirmación y retroalimentación de UI opcional para el costo de anclaje en $EQTY
Integración de relay
Autenticarse a través de SIWE (Iniciar sesión con Ethereum)
Almacenar y actualizar tokens de acceso según sea necesario
Utilizar solicitudes autenticadas para obtener mensajes cifrados del servicio de retransmisión
Características eliminadas
Interfaz de arrendamiento LTO
Selección de nodos y vista de cadena
Gestión de identidad en cadena vinculada a LTO
11. Plan de migración
Con la deprecación de LTO Layer 1 y la introducción de un nuevo sistema de anclaje en Base, todos los componentes centrales del protocolo deben migrar. Los datos heredados vinculados a la infraestructura de LTO, incluyendo anclajes, cadenas de eventos y mensajes, ya no serán válidos.
Lo que se vuelve inválido
Las cadenas de eventos firmadas utilizando pares de claves LTO no pueden ser verificadas, ya que la clave pública ya no es extraíble de las firmas basadas en Ethereum.
Los anclajes registrados en LTO L1 no pueden ser confiables ni consultados en el futuro.
Los elementos propiedad de identidades basadas en LTO o cadenas ancladas deben ser reemplazados.
Los mensajes no anclados en Base serán rechazados por el servicio de retransmisión.
Acciones requeridas
Migración de tokenLos usuarios deben intercambiar manualmente sus tokens LTO por $EQTY utilizando el puente. La acuñación solo es posible hasta una altura de bloque específica en Base. Después de este bloque, el puente se cerrará y la función de acuñación se desactivará permanentemente. Los tokens LTO no intercambiados se vuelven inútiles.
Reemitir activos Ownables.Los emisores Ownable deben emitir nuevos ownables vinculados a la red BASE. Se seguirán instrucciones sobre cómo intercambiar los Ownables heredados por nuevos Ownables
Transición de billetera Los usuarios deberán actualizar la Billetera Universal.
Sin instantánea
No habrá instantánea, migración automática o capa de compatibilidad hacia atrás. Cada componente (eventos, mensajes, saldos de tokens) debe restablecerse en Base a través de las interfaces adecuadas. El nuevo protocolo es limpio por diseño y no preserva lazos con LTO L1.
