• Duel jest otwarty na Robinhood Chain
  • Uruchom pojedynek dwa tokeny, trzy pule, jedna transakcja
  • Runda zamyka się za --:--:--
  • Czterogodzinne rundy odkup zwycięzcy ma limit ceny
  • Płynność zablokowana na zawsze, bez tokenów zespołu

Kontrakty

Duel to sześć kontraktów, pięć z nich wdrożonych w Robinhood Chain i jeden nigdy niewdrożony, zbudowanych na wdrożeniu Uniswap V4 tej sieci. Solidity 0.8.26, Foundry, OpenZeppelin, v4-core. Pojedynki żyją w sieci: aplikacja odczytuje ją przez serwer strony lub bezpośrednio, a ich historię z indeksera zdarzeń sieci.

KontraktRola
DuelFactoryUruchamia pojedynek w jednej transakcji: dwa tokeny, trzy pule, zablokowane pozycje, zakupy twórcy przy starcie. Przechowuje ograniczoną konfigurację przyszłych pojedynków; uruchomienie wiąże się z konfiguracją, którą odczytał uruchamiający (configHash), i jest cofane, jeśli w międzyczasie zaczęła obowiązywać inna.
DuelHookHook Uniswap V4 wspólny dla trzech pul każdego pojedynku: opłaty, podatek antysnajperski, spalanie przy zmianach strony, wyrównanie, średnia podziału, rundy i odkupy, a także pula nagród, opłaty twórcy i opłaty protokołu każdego pojedynku.
DuelTokenZwykły ERC-20 każdej strony: miliard jednostek, spalany, bez właściciela, z permitami (EIP-2612).
DuelRouterRouter z dokładnym wejściem, przez który handluje aplikacja, łącznie z permitem sprzedaży; tylko on sprzedaje stronę w kilku przebiegach, gdy jej pula ETH nie może przyjąć sprzedaży za jednym razem (SALE_PASSES), a to, czego ta pula nie może odkupić nawet wtedy, przez drugą stronę (sell). Działa też dowolny router V4, w jednym swapie.
DuelLensWidoki tylko do odczytu, które zbierają stan pojedynku dla aplikacji.
DuelSimulatorNigdy niewdrażany. Aplikacja umieszcza jego kod na twoim własnym adresie na czas jednego wywołania tylko do odczytu (state override), aby transakcja wykonała się tak, jak byś ją wysłał, i odpowiedziała, co byś otrzymał i gdzie wylądowałby podział po wyrównaniu pul.

Wersja

Ten launchpad to Duel V1, nazwa kodowa Petunia. Mówi o tym każdy jego kontrakt (VERSION() i CODENAME() w fabryce, hooku, routerze i lensie), a każdy token, który uruchamia, zachowuje to na zawsze (LAUNCHPAD_VERSION() i LAUNCHPAD_CODENAME()): sekcja Informacje pojedynku to pokazuje, tak jak mówią jego tokeny. Późniejszy launchpad, wdrożony osobno, kontynuowałby numerację z własną nazwą kodową, a jego tokeny podawałyby swoją.

Adresy

Duel opiera się na tych kontraktach Robinhood Chain:

PoolManager Uniswap V40x8366a39CC670B4001A1121B8F6A443A643e40951
Universal Router (mainnet)0x204FAca1764B154221e35c0d20aBb3c525710498
V4 Quoter0x8Dc178eFB8111BB0973Dd9d722ebeFF267c98F94
Permit20x000000000022D473030F116dDEE9F6B43aC78BA3

Hook

Adres hooka V4 niesie listę callbacków, które implementuje. Hook Duel używa:

CallbackCo robi
beforeInitializeTylko fabryka może otworzyć pulę na hooku, i tylko zarejestrowane pule pojedynku.
beforeAddLiquidityTylko fabryka może dodać płynność, przy starcie.
beforeRemoveLiquidityZawsze jest cofany: płynność jest zablokowana na zawsze.
beforeDonateZawsze jest cofany.
beforeSwapRozlicza zakończoną rundę, aktualizuje średnie, pobiera opłaty i podatki.
afterSwapPobiera opłaty należne od kwoty, której swap nie określił, sprawdza, czy swap obciążony z góry wypełnił się w całości, a potem wyrównuje trzy pule.

Opłaty są pobierane przez return deltas hooka, więc obowiązują niezależnie od tego, kto kieruje swapem.

Kto co może

PodmiotMoże
KażdyUruchamiać, handlować, rozliczać zakończone rundy, wywoływać odbiór dla twórcy lub skarbca, stosować zaproponowane warunki po upływie ich 48 godzin
Twórca pojedynkuOtrzymywać opłaty twórcy tego pojedynku; przekazać rolę, wraz z opłatami, adresowi, który ją przyjmie
Właściciel fabrykiWstrzymywać nowe uruchomienia; po 48 godzinach zmieniać ograniczone warunki przyszłych pojedynków lub skarbiec protokołu. Bieżący skarbiec otrzymuje zgromadzone opłaty protokołu w chwili odbioru. Od razu obniżyć udział protokołu w opłacie za swap we wszystkich pojedynkach albo podnieść go z powrotem, nigdy ponad ich warunki.
NiktWycofać płynności, mintować tokenów, przenieść puli nagród, zmienić opłaty, którą płacą traderzy trwającego pojedynku, ani udziału jego twórcy, podnieść udziału protokołu ponad warunki pojedynku, odebrać pojedynkowi roli twórcy, zaktualizować kontraktów

Więcej