Contracten
Duel bestaat uit zes contracten, vijf ervan gedeployd op Robinhood Chain en één nooit gedeployd, gebouwd op de Uniswap V4-deployment van de chain. Solidity 0.8.26, Foundry, OpenZeppelin, v4-core. De duels leven op de chain: de app leest die, via de server van de site of rechtstreeks, en hun geschiedenis uit een indexer van de events van de chain.
| Contract | Rol |
|---|---|
DuelFactory | Lanceert een duel in één transactie: twee tokens, drie pools, vergrendelde posities, de lanceringsaankopen van de creator. Beheert de begrensde configuratie van toekomstige duels; een lancering legt zich vast op de configuratie die de lanceerder heeft gelezen (configHash) en draait terug als er intussen een andere van kracht werd. |
DuelHook | De Uniswap V4-hook die de drie pools van elk duel delen: vergoedingen, anti-snipebelasting, de burn bij wissels, de herschikking, het gemiddelde van de verdeling, rondes en terugkopen, en de pot, de creatorvergoedingen en de protocolvergoedingen van elk duel. |
DuelToken | De gewone ERC-20 van elke kant: één miljard eenheden, verbrandbaar, zonder eigenaar, met permits (EIP-2612). |
DuelRouter | De exact-input-router waarmee de app handelt, inclusief de permit van een verkoop; alleen hij verkoopt een kant in meerdere stappen wanneer de ETH-pool van die kant de verkoop niet in één keer kan opnemen (SALE_PASSES), en wat die pool zelfs dan niet kan terugkopen, via de andere kant (sell). Elke V4-router werkt ook, in één swap. |
DuelLens | Alleen-lezen-views die de toestand van een duel voor de app verzamelen. |
DuelSimulator | Nooit gedeployd. De app zet zijn code voor één alleen-lezen-aanroep op je eigen adres (een state override), zodat een trade loopt zoals je hem zou versturen en antwoordt wat je zou ontvangen en waar de verdeling zou uitkomen nadat de pools zijn herschikt. |
Versie
Dit launchpad is Duel V1, codenaam Petunia. Elk van zijn contracten zegt dat (VERSION() en CODENAME() op de factory, de hook, de router en de lens), en elke token die het lanceert, houdt dat voorgoed (LAUNCHPAD_VERSION() en LAUNCHPAD_CODENAME()): het onderdeel Over van een duel toont het, zoals zijn tokens het zeggen. Een later, apart gedeployd launchpad zou doortellen, met een eigen codenaam, en zijn tokens zouden de hunne noemen.
Adressen
| Contract | Adres op Robinhood Chain |
|---|---|
DuelFactory | 0x3c6e7f9Bc507a442237AF1721B2294686495BD54 |
DuelHook | 0x5F746B7B1722e9bb3849EEa97061Df50F715AAEc |
DuelRouter | 0x9e484C17E7d263F084Ab226a72FCdf301145d6D1 |
DuelLens | 0x1677d3C0a1F9Ae00519AD08C68674f63fe945389 |
Duel steunt op deze contracten van Robinhood Chain:
| Uniswap V4 PoolManager | 0x8366a39CC670B4001A1121B8F6A443A643e40951 |
| Universal Router (mainnet) | 0x204FAca1764B154221e35c0d20aBb3c525710498 |
| V4 Quoter | 0x8Dc178eFB8111BB0973Dd9d722ebeFF267c98F94 |
| Permit2 | 0x000000000022D473030F116dDEE9F6B43aC78BA3 |
De hook
Het adres van een V4-hook draagt de lijst van callbacks die hij implementeert. De hook van Duel gebruikt:
| Callback | Wat hij doet |
|---|---|
beforeInitialize | Alleen de factory mag een pool op de hook openen, en alleen de geregistreerde pools van een duel. |
beforeAddLiquidity | Alleen de factory mag liquiditeit toevoegen, bij de lancering. |
beforeRemoveLiquidity | Draait altijd terug: de liquiditeit is voor altijd vergrendeld. |
beforeDonate | Draait altijd terug. |
beforeSwap | Rekent een afgelopen ronde af, werkt de gemiddelden bij, heft vergoedingen en belastingen. |
afterSwap | Heft de vergoedingen die verschuldigd zijn over het bedrag dat de swap niet vastlegde, controleert dat een vooraf belaste swap volledig is uitgevoerd en herschikt daarna de drie pools. |
Vergoedingen worden geheven met de return deltas van de hook, dus ze gelden wie de swap ook routeert.
Wie wat kan
| Actor | Kan |
|---|---|
| Iedereen | Lanceren, handelen, afgelopen rondes afrekenen, opeisingen voor de creator of de treasury starten, voorgestelde voorwaarden toepassen zodra hun 48 uur voorbij zijn |
| De creator van een duel | De creatorvergoedingen van dat duel ontvangen; de rol, met de vergoedingen, overdragen aan een adres dat hem accepteert |
| Eigenaar van de factory | Nieuwe lanceringen pauzeren; na 48 uur de begrensde voorwaarden voor toekomstige duels of de protocoltreasury wijzigen. De huidige treasury ontvangt opgebouwde protocolvergoedingen op het moment van opeisen. Het deel van het protocol in de swapvergoeding van alle duels meteen verlagen, of weer verhogen, nooit boven hun voorwaarden. |
| Niemand | Liquiditeit weghalen, tokens minten, een pot verplaatsen, de vergoeding die de traders van een lopend duel betalen of het deel van zijn creator wijzigen, het deel van het protocol boven de voorwaarden van een duel verhogen, een duel zijn creatorrol afnemen, contracten upgraden |
Meer
- Beveiliging: wat de fondsen beschermt en hoe dat is gecontroleerd.
- Bouwen op Duel: duels lezen en handelen vanuit je eigen code.