Contratos
Duel son seis contratos, cinco de ellos desplegados en Robinhood Chain y uno que nunca se despliega, construidos sobre el despliegue de Uniswap V4 de la cadena. Solidity 0.8.26, Foundry, OpenZeppelin, v4-core. Los duelos viven en la cadena: la app la lee, a través del servidor del sitio o directamente, y su historial en un indexador de los eventos de la cadena.
| Contrato | Función |
|---|---|
DuelFactory | Lanza un duelo en una transacción: dos tokens, tres pools, posiciones bloqueadas y las compras de lanzamiento del creador. Tiene la configuración acotada de los duelos futuros; un lanzamiento se compromete con la configuración que leyó quien lo lanza (configHash) y se revierte si mientras tanto se aplicó otra. |
DuelHook | El hook de Uniswap V4 que comparten los tres pools de cada duelo: comisiones, impuesto antisnipe, quema de los cambios, realineación, media del reparto, rondas y recompras, y el bote, las comisiones del creador y las del protocolo de cada duelo. |
DuelToken | El ERC-20 corriente de cada bando: mil millones de unidades, quemable, sin propietario, con permits (EIP-2612). |
DuelRouter | El router de entrada exacta con el que opera la app, incluido el permit de una venta; solo él vende un bando en varias pasadas cuando su pool de ETH no puede absorber la venta de una vez (SALE_PASSES), y lo que ese pool ni aun así puede recomprar, a través del otro bando (sell). Cualquier router V4 también sirve, en un solo swap. |
DuelLens | Vistas de solo lectura que reúnen el estado de un duelo para la app. |
DuelSimulator | Nunca se despliega. La app pone su código en tu propia dirección durante una llamada de solo lectura (un state override), para que una operación se ejecute tal como la enviarías y responda qué recibirías y dónde quedaría el reparto una vez realineados los pools. |
Versión
Este launchpad es Duel V1, nombre en clave Petunia. Cada uno de sus contratos lo indica (VERSION() y CODENAME() en la fábrica, el hook, el router y la lens), y cada token que lanza lo conserva para siempre (LAUNCHPAD_VERSION() y LAUNCHPAD_CODENAME()): la sección Acerca de de un duelo lo muestra, tal como lo dicen sus tokens. Un launchpad posterior, desplegado aparte, seguiría la numeración con un nombre en clave propio, y sus tokens dirían el suyo.
Direcciones
| Contrato | Dirección en Robinhood Chain |
|---|---|
DuelFactory | 0x3c6e7f9Bc507a442237AF1721B2294686495BD54 |
DuelHook | 0x5F746B7B1722e9bb3849EEa97061Df50F715AAEc |
DuelRouter | 0x9e484C17E7d263F084Ab226a72FCdf301145d6D1 |
DuelLens | 0x1677d3C0a1F9Ae00519AD08C68674f63fe945389 |
Duel se apoya en estos contratos de Robinhood Chain:
| PoolManager de Uniswap V4 | 0x8366a39CC670B4001A1121B8F6A443A643e40951 |
| Universal Router (mainnet) | 0x204FAca1764B154221e35c0d20aBb3c525710498 |
| V4 Quoter | 0x8Dc178eFB8111BB0973Dd9d722ebeFF267c98F94 |
| Permit2 | 0x000000000022D473030F116dDEE9F6B43aC78BA3 |
El hook
La dirección de un hook V4 lleva la lista de callbacks que implementa. El hook de Duel usa:
| Callback | Qué hace |
|---|---|
beforeInitialize | Solo la fábrica puede abrir un pool en el hook, y solo los pools registrados de un duelo. |
beforeAddLiquidity | Solo la fábrica puede añadir liquidez, en el lanzamiento. |
beforeRemoveLiquidity | Siempre se revierte: la liquidez está bloqueada para siempre. |
beforeDonate | Siempre se revierte. |
beforeSwap | Liquida una ronda terminada, actualiza las medias y cobra comisiones e impuestos. |
afterSwap | Cobra las comisiones debidas sobre el importe que el swap no fijó, comprueba que un swap cobrado de antemano se completó del todo y luego realinea los tres pools. |
Las comisiones se cobran con los return deltas del hook, así que se aplican sea quien sea quien enrute el swap.
Quién puede hacer qué
| Actor | Puede |
|---|---|
| Cualquiera | Lanzar, operar, liquidar rondas terminadas, activar las reclamaciones del creador o de la tesorería, aplicar los términos propuestos una vez pasadas sus 48 horas |
| El creador de un duelo | Recibir las comisiones de creador de ese duelo; ceder el rol, con sus comisiones, a una dirección que lo acepte |
| Propietario de la fábrica | Pausar nuevos lanzamientos; cambiar, tras 48 horas, los términos acotados de los duelos futuros o la tesorería del protocolo. La tesorería vigente recibe las comisiones del protocolo acumuladas en el momento de reclamarlas. Reducir al instante la parte del protocolo en la comisión de swap de todos los duelos, o volver a subirla, nunca por encima de sus términos. |
| Nadie | Retirar liquidez, acuñar tokens, mover un bote, cambiar la comisión que pagan los traders de un duelo activo o la parte de su creador, subir la parte del protocolo por encima de los términos de un duelo, quitarle a un duelo su rol de creador, actualizar contratos |
Más
- Seguridad: qué protege los fondos y cómo se comprobó.
- Construir sobre Duel: leer duelos y operar desde tu propio código.