Contratti
Duel è fatto di sei contratti, cinque dei quali distribuiti su Robinhood Chain e uno mai distribuito, costruiti sul deployment di Uniswap V4 della chain. Solidity 0.8.26, Foundry, OpenZeppelin, v4-core. I duelli vivono sulla chain: l'app la legge, tramite il server del sito o direttamente, e la loro storia da un indicizzatore degli eventi della chain.
| Contratto | Ruolo |
|---|---|
DuelFactory | Lancia un duello in una transazione: due token, tre pool, posizioni bloccate, gli acquisti al lancio del creatore. Detiene la configurazione limitata dei duelli futuri; un lancio si impegna sulla configurazione letta da chi lancia (configHash) e fa revert se nel frattempo se n'è applicata un'altra. |
DuelHook | L'hook Uniswap V4 condiviso dai tre pool di ogni duello: commissioni, tassa anti-snipe, burn dei passaggi, riallineamento, media della ripartizione, round e riacquisti, e il piatto, le commissioni del creatore e quelle del protocollo di ogni duello. |
DuelToken | Il normale ERC-20 di ogni fazione: un miliardo di unità, bruciabile, senza proprietario, con i permit (EIP-2612). |
DuelRouter | Il router a input esatto con cui l'app fa trading, compreso il permit di una vendita; è il solo a vendere una fazione a più riprese quando il suo pool ETH non può assorbire la vendita in una volta (SALE_PASSES), e ciò che quel pool non può riacquistare nemmeno allora, attraverso l'altra fazione (sell). Funziona anche qualsiasi router V4, con un solo swap. |
DuelLens | Viste in sola lettura che raccolgono lo stato di un duello per l'app. |
DuelSimulator | Mai distribuito. L'app mette il suo codice sul tuo indirizzo per una chiamata in sola lettura (uno state override), così un'operazione viene eseguita come la invieresti e risponde con ciò che riceveresti e dove finirebbe la ripartizione una volta riallineati i pool. |
Versione
Questo launchpad è Duel V1, nome in codice Petunia. Ognuno dei suoi contratti lo dichiara (VERSION() e CODENAME() sulla factory, sull'hook, sul router e sulla lens), e ogni token che lancia lo conserva per sempre (LAUNCHPAD_VERSION() e LAUNCHPAD_CODENAME()): la sezione Info di un duello lo mostra, come lo dicono i suoi token. Un launchpad successivo, distribuito a parte, continuerebbe la numerazione con un proprio nome in codice, e i suoi token direbbero il loro.
Indirizzi
| Contratto | Indirizzo su Robinhood Chain |
|---|---|
DuelFactory | 0x3c6e7f9Bc507a442237AF1721B2294686495BD54 |
DuelHook | 0x5F746B7B1722e9bb3849EEa97061Df50F715AAEc |
DuelRouter | 0x9e484C17E7d263F084Ab226a72FCdf301145d6D1 |
DuelLens | 0x1677d3C0a1F9Ae00519AD08C68674f63fe945389 |
Duel si basa su questi contratti di Robinhood Chain:
| PoolManager di Uniswap V4 | 0x8366a39CC670B4001A1121B8F6A443A643e40951 |
| Universal Router (mainnet) | 0x204FAca1764B154221e35c0d20aBb3c525710498 |
| V4 Quoter | 0x8Dc178eFB8111BB0973Dd9d722ebeFF267c98F94 |
| Permit2 | 0x000000000022D473030F116dDEE9F6B43aC78BA3 |
L'hook
L'indirizzo di un hook V4 contiene l'elenco delle callback che implementa. L'hook di Duel usa:
| Callback | Cosa fa |
|---|---|
beforeInitialize | Solo la factory può aprire un pool sull'hook, e solo i pool registrati di un duello. |
beforeAddLiquidity | Solo la factory può aggiungere liquidità, al lancio. |
beforeRemoveLiquidity | Fa sempre revert: la liquidità è bloccata per sempre. |
beforeDonate | Fa sempre revert. |
beforeSwap | Regola un round finito, aggiorna le medie, preleva commissioni e tasse. |
afterSwap | Preleva le commissioni dovute sull'importo che lo swap non ha fissato, verifica che uno swap addebitato prima si sia completato interamente, poi riallinea i tre pool. |
Le commissioni sono prelevate con i return delta dell'hook, quindi si applicano chiunque instradi lo swap.
Chi può fare cosa
| Attore | Può |
|---|---|
| Chiunque | Lanciare, fare trading, regolare i round finiti, avviare le riscossioni del creatore o della tesoreria, applicare i termini proposti una volta trascorse le loro 48 ore |
| Il creatore di un duello | Ricevere le commissioni del creatore di quel duello; cedere il ruolo, con le sue commissioni, a un indirizzo che lo accetta |
| Proprietario della factory | Sospendere i nuovi lanci; cambiare dopo 48 ore i termini limitati dei duelli futuri o la tesoreria del protocollo. La tesoreria attuale riceve le commissioni del protocollo accumulate al momento della riscossione. Abbassare subito la quota del protocollo sulla commissione di swap di tutti i duelli, o rialzarla, mai oltre i loro termini. |
| Nessuno | Ritirare liquidità, coniare token, spostare un piatto, cambiare la commissione che pagano i trader di un duello attivo o la quota del suo creatore, alzare la quota del protocollo oltre i termini di un duello, sottrarre a un duello il ruolo di creatore, aggiornare i contratti |
Altro
- Sicurezza: cosa protegge i fondi e come è stato verificato.
- Costruire su Duel: leggere i duelli e fare trading dal tuo codice.