[{"data":1,"prerenderedAt":371},["ShallowReactive",2],{"docs:pl:\u002Fdocs\u002Fduel\u002Fcontracts\u002Foverview":3},{"id":4,"title":5,"body":6,"cover":362,"description":363,"extension":364,"meta":365,"navigation":366,"path":367,"seo":368,"stem":369,"__hash__":370},"docs\u002Fpl\u002Fdocs\u002Fduel\u002Fcontracts\u002Foverview.md","Kontrakty",{"type":7,"value":8,"toc":352},"minimark",[9,13,17,110,115,133,137,140,143,195,199,202,276,279,283,329,333],[10,11,5],"h1",{"id":12},"kontrakty",[14,15,16],"p",{},"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.",[18,19,20,33],"table",{},[21,22,23],"thead",{},[24,25,26,30],"tr",{},[27,28,29],"th",{},"Kontrakt",[27,31,32],{},"Rola",[34,35,36,52,62,72,90,100],"tbody",{},[24,37,38,45],{},[39,40,41],"td",{},[42,43,44],"code",{},"DuelFactory",[39,46,47,48,51],{},"Uruchamia 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 (",[42,49,50],{},"configHash","), i jest cofane, jeśli w międzyczasie zaczęła obowiązywać inna.",[24,53,54,59],{},[39,55,56],{},[42,57,58],{},"DuelHook",[39,60,61],{},"Hook 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.",[24,63,64,69],{},[39,65,66],{},[42,67,68],{},"DuelToken",[39,70,71],{},"Zwykły ERC-20 każdej strony: miliard jednostek, spalany, bez właściciela, z permitami (EIP-2612).",[24,73,74,79],{},[39,75,76],{},[42,77,78],{},"DuelRouter",[39,80,81,82,85,86,89],{},"Router 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 (",[42,83,84],{},"SALE_PASSES","), a to, czego ta pula nie może odkupić nawet wtedy, przez drugą stronę (",[42,87,88],{},"sell","). Działa też dowolny router V4, w jednym swapie.",[24,91,92,97],{},[39,93,94],{},[42,95,96],{},"DuelLens",[39,98,99],{},"Widoki tylko do odczytu, które zbierają stan pojedynku dla aplikacji.",[24,101,102,107],{},[39,103,104],{},[42,105,106],{},"DuelSimulator",[39,108,109],{},"Nigdy 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.",[111,112,114],"h2",{"id":113},"wersja","Wersja",[14,116,117,118,121,122,125,126,121,129,132],{},"Ten launchpad to Duel V1, nazwa kodowa Petunia. Mówi o tym każdy jego kontrakt (",[42,119,120],{},"VERSION()"," i ",[42,123,124],{},"CODENAME()"," w fabryce, hooku, routerze i lensie), a każdy token, który uruchamia, zachowuje to na zawsze (",[42,127,128],{},"LAUNCHPAD_VERSION()",[42,130,131],{},"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ą.",[111,134,136],{"id":135},"adresy","Adresy",[138,139],"contract-addresses",{},[14,141,142],{},"Duel opiera się na tych kontraktach Robinhood Chain:",[18,144,145,153],{},[21,146,147],{},[24,148,149,151],{},[27,150],{},[27,152],{},[34,154,155,165,175,185],{},[24,156,157,160],{},[39,158,159],{},"PoolManager Uniswap V4",[39,161,162],{},[42,163,164],{},"0x8366a39CC670B4001A1121B8F6A443A643e40951",[24,166,167,170],{},[39,168,169],{},"Universal Router (mainnet)",[39,171,172],{},[42,173,174],{},"0x204FAca1764B154221e35c0d20aBb3c525710498",[24,176,177,180],{},[39,178,179],{},"V4 Quoter",[39,181,182],{},[42,183,184],{},"0x8Dc178eFB8111BB0973Dd9d722ebeFF267c98F94",[24,186,187,190],{},[39,188,189],{},"Permit2",[39,191,192],{},[42,193,194],{},"0x000000000022D473030F116dDEE9F6B43aC78BA3",[111,196,198],{"id":197},"hook","Hook",[14,200,201],{},"Adres hooka V4 niesie listę callbacków, które implementuje. Hook Duel używa:",[18,203,204,214],{},[21,205,206],{},[24,207,208,211],{},[27,209,210],{},"Callback",[27,212,213],{},"Co robi",[34,215,216,226,236,246,256,266],{},[24,217,218,223],{},[39,219,220],{},[42,221,222],{},"beforeInitialize",[39,224,225],{},"Tylko fabryka może otworzyć pulę na hooku, i tylko zarejestrowane pule pojedynku.",[24,227,228,233],{},[39,229,230],{},[42,231,232],{},"beforeAddLiquidity",[39,234,235],{},"Tylko fabryka może dodać płynność, przy starcie.",[24,237,238,243],{},[39,239,240],{},[42,241,242],{},"beforeRemoveLiquidity",[39,244,245],{},"Zawsze jest cofany: płynność jest zablokowana na zawsze.",[24,247,248,253],{},[39,249,250],{},[42,251,252],{},"beforeDonate",[39,254,255],{},"Zawsze jest cofany.",[24,257,258,263],{},[39,259,260],{},[42,261,262],{},"beforeSwap",[39,264,265],{},"Rozlicza zakończoną rundę, aktualizuje średnie, pobiera opłaty i podatki.",[24,267,268,273],{},[39,269,270],{},[42,271,272],{},"afterSwap",[39,274,275],{},"Pobiera 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.",[14,277,278],{},"Opłaty są pobierane przez return deltas hooka, więc obowiązują niezależnie od tego, kto kieruje swapem.",[111,280,282],{"id":281},"kto-co-może","Kto co może",[18,284,285,295],{},[21,286,287],{},[24,288,289,292],{},[27,290,291],{},"Podmiot",[27,293,294],{},"Może",[34,296,297,305,313,321],{},[24,298,299,302],{},[39,300,301],{},"Każdy",[39,303,304],{},"Uruchamiać, handlować, rozliczać zakończone rundy, wywoływać odbiór dla twórcy lub skarbca, stosować zaproponowane warunki po upływie ich 48 godzin",[24,306,307,310],{},[39,308,309],{},"Twórca pojedynku",[39,311,312],{},"Otrzymywać opłaty twórcy tego pojedynku; przekazać rolę, wraz z opłatami, adresowi, który ją przyjmie",[24,314,315,318],{},[39,316,317],{},"Właściciel fabryki",[39,319,320],{},"Wstrzymywać 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.",[24,322,323,326],{},[39,324,325],{},"Nikt",[39,327,328],{},"Wycofać 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",[111,330,332],{"id":331},"więcej","Więcej",[334,335,336,345],"ul",{},[337,338,339,344],"li",{},[340,341,343],"a",{"href":342},"\u002Fdocs\u002Fduel\u002Fcontracts\u002Fsecurity","Bezpieczeństwo",": co chroni środki i jak to sprawdzono.",[337,346,347,351],{},[340,348,350],{"href":349},"\u002Fdocs\u002Fduel\u002Fcontracts\u002Fintegrate","Budowanie na Duel",": odczytywanie pojedynków i handel z własnego kodu.",{"title":353,"searchDepth":354,"depth":355,"links":356},"",2,3,[357,358,359,360,361],{"id":113,"depth":354,"text":114},{"id":135,"depth":354,"text":136},{"id":197,"depth":354,"text":198},{"id":281,"depth":354,"text":282},{"id":331,"depth":354,"text":332},null,"Kontrakty Duel na Robinhood Chain: fabryka, hook Uniswap V4, token, router i lens, ich adresy, callbacki hooka i to, kto co może zrobić.","md",{},true,"\u002Fpl\u002Fdocs\u002Fduel\u002Fcontracts\u002Foverview",{"title":5,"description":363},"pl\u002Fdocs\u002Fduel\u002Fcontracts\u002Foverview","GhxS906ZmBCbxqrQPdAEVATLkFYW93qLhFCpi_Sy1JI",1791232799576]