[{"data":1,"prerenderedAt":372},["ShallowReactive",2],{"docs:fr:\u002Fdocs\u002Fduel\u002Fcontracts\u002Foverview":3},{"id":4,"title":5,"body":6,"cover":363,"description":364,"extension":365,"meta":366,"navigation":367,"path":368,"seo":369,"stem":370,"__hash__":371},"docs\u002Ffr\u002Fdocs\u002Fduel\u002Fcontracts\u002Foverview.md","Contrats",{"type":7,"value":8,"toc":353},"minimark",[9,13,17,110,115,134,138,141,144,196,200,203,277,280,284,330,334],[10,11,5],"h1",{"id":12},"contrats",[14,15,16],"p",{},"Duel, c’est six contrats, cinq déployés sur Robinhood Chain et un qui ne l’est jamais, construits sur le déploiement Uniswap V4 de la chaîne. Solidity 0.8.26,\nFoundry, OpenZeppelin, v4-core. Les duels vivent sur la chaîne : l’app la lit, par le serveur du site ou directement, et\nleur historique dans un indexeur de ses événements.",[18,19,20,33],"table",{},[21,22,23],"thead",{},[24,25,26,30],"tr",{},[27,28,29],"th",{},"Contrat",[27,31,32],{},"Rôle",[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],{},"Lance un duel en une transaction : deux tokens, trois pools, des positions verrouillées, les achats de lancement du créateur. Détient la configuration bornée des duels à venir ; un lancement s’engage sur la configuration lue par son auteur (",[42,49,50],{},"configHash",") et échoue si une autre s’est appliquée entre-temps.",[24,53,54,59],{},[39,55,56],{},[42,57,58],{},"DuelHook",[39,60,61],{},"Le hook Uniswap V4 partagé par les trois pools de chaque duel : les frais, la taxe anti-snipe, le burn des changements de camp, le réalignement, la moyenne de la répartition, les rounds et les rachats, ainsi que la cagnotte, les frais du créateur et les frais du protocole de chaque duel.",[24,63,64,69],{},[39,65,66],{},[42,67,68],{},"DuelToken",[39,70,71],{},"L’ERC-20 ordinaire de chaque camp : un milliard d’unités, brûlable, sans propriétaire, avec des permits (EIP-2612).",[24,73,74,79],{},[39,75,76],{},[42,77,78],{},"DuelRouter",[39,80,81,82,85,86,89],{},"Le router à entrée exacte par lequel l’app trade, permit d’une vente compris ; lui seul vend un camp en plusieurs passes quand son pool ETH ne peut pas absorber la vente d’un coup (",[42,83,84],{},"SALE_PASSES","), et ce que ce pool ne peut toujours pas racheter, par l’autre camp (",[42,87,88],{},"sell","). N’importe quel router V4 fonctionne aussi, en un swap.",[24,91,92,97],{},[39,93,94],{},[42,95,96],{},"DuelLens",[39,98,99],{},"Des vues en lecture seule qui rassemblent l’état d’un duel pour l’app.",[24,101,102,107],{},[39,103,104],{},[42,105,106],{},"DuelSimulator",[39,108,109],{},"Jamais déployé. L’app place son code sur votre propre adresse le temps d’un appel en lecture seule (un state override) : un trade s’exécute comme vous l’enverriez et renvoie ce que vous recevriez et où arriverait la répartition une fois les pools réalignés.",[111,112,114],"h2",{"id":113},"version","Version",[14,116,117,118,121,122,125,126,129,130,133],{},"Ce launchpad est Duel V1, nom de code Petunia. Chacun de ses contrats le dit (",[42,119,120],{},"VERSION()"," et ",[42,123,124],{},"CODENAME()"," sur la\nfactory, le hook, le router et la lens), et chaque token qu’il lance le garde pour de bon (",[42,127,128],{},"LAUNCHPAD_VERSION()"," et\n",[42,131,132],{},"LAUNCHPAD_CODENAME()",") : la section À propos d’un duel l’affiche, tel que ses tokens le disent. Un launchpad déployé plus\ntard, à part, prendrait le numéro suivant et un nom de code à lui, et ses tokens diraient le leur.",[111,135,137],{"id":136},"adresses","Adresses",[139,140],"contract-addresses",{},[14,142,143],{},"Duel s’appuie sur ces contrats de Robinhood Chain :",[18,145,146,154],{},[21,147,148],{},[24,149,150,152],{},[27,151],{},[27,153],{},[34,155,156,166,176,186],{},[24,157,158,161],{},[39,159,160],{},"PoolManager Uniswap V4",[39,162,163],{},[42,164,165],{},"0x8366a39CC670B4001A1121B8F6A443A643e40951",[24,167,168,171],{},[39,169,170],{},"Universal Router (mainnet)",[39,172,173],{},[42,174,175],{},"0x204FAca1764B154221e35c0d20aBb3c525710498",[24,177,178,181],{},[39,179,180],{},"V4 Quoter",[39,182,183],{},[42,184,185],{},"0x8Dc178eFB8111BB0973Dd9d722ebeFF267c98F94",[24,187,188,191],{},[39,189,190],{},"Permit2",[39,192,193],{},[42,194,195],{},"0x000000000022D473030F116dDEE9F6B43aC78BA3",[111,197,199],{"id":198},"le-hook","Le hook",[14,201,202],{},"L’adresse d’un hook V4 encode la liste des callbacks qu’il implémente. Le hook de Duel utilise :",[18,204,205,215],{},[21,206,207],{},[24,208,209,212],{},[27,210,211],{},"Callback",[27,213,214],{},"Ce qu’il fait",[34,216,217,227,237,247,257,267],{},[24,218,219,224],{},[39,220,221],{},[42,222,223],{},"beforeInitialize",[39,225,226],{},"Seule la factory peut ouvrir un pool sur le hook, et seulement les pools enregistrés d’un duel.",[24,228,229,234],{},[39,230,231],{},[42,232,233],{},"beforeAddLiquidity",[39,235,236],{},"Seule la factory peut ajouter de la liquidité, au lancement.",[24,238,239,244],{},[39,240,241],{},[42,242,243],{},"beforeRemoveLiquidity",[39,245,246],{},"Échoue toujours (revert) : la liquidité est verrouillée pour toujours.",[24,248,249,254],{},[39,250,251],{},[42,252,253],{},"beforeDonate",[39,255,256],{},"Échoue toujours (revert).",[24,258,259,264],{},[39,260,261],{},[42,262,263],{},"beforeSwap",[39,265,266],{},"Règle un round terminé, met à jour les moyennes, prélève les frais et les taxes.",[24,268,269,274],{},[39,270,271],{},[42,272,273],{},"afterSwap",[39,275,276],{},"Prélève les frais dus sur le montant que le swap n’a pas fixé, vérifie qu’un swap facturé avant s’est exécuté en entier, puis réaligne les trois pools.",[14,278,279],{},"Les frais sont prélevés par les return deltas du hook : ils s’appliquent quel que soit le chemin du swap.",[111,281,283],{"id":282},"qui-peut-faire-quoi","Qui peut faire quoi",[18,285,286,296],{},[21,287,288],{},[24,289,290,293],{},[27,291,292],{},"Acteur",[27,294,295],{},"Peut",[34,297,298,306,314,322],{},[24,299,300,303],{},[39,301,302],{},"N’importe qui",[39,304,305],{},"Lancer, trader, régler les rounds terminés, déclencher les réclamations du créateur ou de la trésorerie, appliquer des conditions proposées une fois leurs 48 heures passées",[24,307,308,311],{},[39,309,310],{},"Le créateur d’un duel",[39,312,313],{},"Recevoir les frais de créateur de ce duel ; céder le rôle, avec ses frais, à une adresse qui l’accepte",[24,315,316,319],{},[39,317,318],{},"Le propriétaire de la factory",[39,320,321],{},"Suspendre les nouveaux lancements ; changer les conditions bornées des futurs duels ou la trésorerie du protocole après 48 heures. La trésorerie actuelle reçoit les frais du protocole accumulés au moment de leur réclamation. Baisser d’un coup la part du protocole sur les frais de swap de tous les duels, ou la remonter, jamais au-delà de leurs conditions.",[24,323,324,327],{},[39,325,326],{},"Personne",[39,328,329],{},"Retirer la liquidité, créer de nouveaux tokens, déplacer une cagnotte, changer les frais que paient les traders d’un duel existant ou la part de son créateur, porter la part du protocole au-delà des conditions d’un duel, prendre le rôle de créateur d’un duel, mettre à jour les contrats",[111,331,333],{"id":332},"pour-aller-plus-loin","Pour aller plus loin",[335,336,337,346],"ul",{},[338,339,340,345],"li",{},[341,342,344],"a",{"href":343},"\u002Fdocs\u002Fduel\u002Fcontracts\u002Fsecurity","Sécurité"," : ce qui protège les fonds, et comment ça a été vérifié.",[338,347,348,352],{},[341,349,351],{"href":350},"\u002Fdocs\u002Fduel\u002Fcontracts\u002Fintegrate","Construire sur Duel"," : lire les duels et trader depuis votre propre code.",{"title":354,"searchDepth":355,"depth":356,"links":357},"",2,3,[358,359,360,361,362],{"id":113,"depth":355,"text":114},{"id":136,"depth":355,"text":137},{"id":198,"depth":355,"text":199},{"id":282,"depth":355,"text":283},{"id":332,"depth":355,"text":333},null,"Les contrats de Duel sur Robinhood Chain : factory, hook Uniswap V4, token, router et lens, leurs adresses, les callbacks du hook, et qui peut faire quoi.","md",{},true,"\u002Ffr\u002Fdocs\u002Fduel\u002Fcontracts\u002Foverview",{"title":5,"description":364},"fr\u002Fdocs\u002Fduel\u002Fcontracts\u002Foverview","oiNnKYLDppO_frSlZn8t-jYdtaI4k8WCFokKUwoYdOc",1791232782207]