[{"data":1,"prerenderedAt":371},["ShallowReactive",2],{"docs:ru:\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\u002Fru\u002Fdocs\u002Fduel\u002Fcontracts\u002Foverview.md","Контракты",{"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},"контракты",[14,15,16],"p",{},"Duel — это шесть контрактов, пять из которых развёрнуты в Robinhood Chain, а один никогда не разворачивался; все они построены на развёртывании Uniswap V4 в этой сети. Solidity 0.8.26, Foundry, OpenZeppelin, v4-core. Дуэли живут в сети: приложение читает её через сервер сайта или напрямую, а их историю — из индексатора событий сети.",[18,19,20,33],"table",{},[21,22,23],"thead",{},[24,25,26,30],"tr",{},[27,28,29],"th",{},"Контракт",[27,31,32],{},"Роль",[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],{},"Запускает дуэль одной транзакцией: два токена, три пула, заблокированные позиции, покупки создателя при запуске. Хранит ограниченную конфигурацию будущих дуэлей; запуск фиксирует конфигурацию, которую прочитал запускающий (",[42,49,50],{},"configHash","), и откатывается, если за это время вступила в силу другая.",[24,53,54,59],{},[39,55,56],{},[42,57,58],{},"DuelHook",[39,60,61],{},"Hook Uniswap V4, общий для трёх пулов каждой дуэли: комиссии, антиснайп-налог, сжигание при переходах, выравнивание, среднее соотношения, раунды и выкупы, а также банк, комиссии создателя и комиссии протокола каждой дуэли.",[24,63,64,69],{},[39,65,66],{},[42,67,68],{},"DuelToken",[39,70,71],{},"Обычный ERC-20 каждой стороны: миллиард единиц, сжигаемый, без владельца, с permit (EIP-2612).",[24,73,74,79],{},[39,75,76],{},[42,77,78],{},"DuelRouter",[39,80,81,82,85,86,89],{},"Роутер с точным входом, через который торгует приложение, включая permit для продажи; только он продаёт сторону в несколько проходов, когда её пул ETH не может принять продажу сразу (",[42,83,84],{},"SALE_PASSES","), а то, что этот пул не может выкупить даже тогда, — через другую сторону (",[42,87,88],{},"sell","). Подойдёт и любой роутер V4, одним свопом.",[24,91,92,97],{},[39,93,94],{},[42,95,96],{},"DuelLens",[39,98,99],{},"Представления только для чтения, которые собирают состояние дуэли для приложения.",[24,101,102,107],{},[39,103,104],{},[42,105,106],{},"DuelSimulator",[39,108,109],{},"Никогда не развёртывается. Приложение помещает его код на ваш собственный адрес на время одного вызова только для чтения (state override), чтобы сделка выполнилась так, как вы бы её отправили, и показала, что вы получите и где окажется соотношение после выравнивания пулов.",[111,112,114],"h2",{"id":113},"версия","Версия",[14,116,117,118,121,122,125,126,121,129,132],{},"Этот лаунчпад — Duel V1, кодовое имя Petunia. Об этом сообщает каждый его контракт (",[42,119,120],{},"VERSION()"," и ",[42,123,124],{},"CODENAME()"," у фабрики, hook, роутера и lens), и каждый запущенный им токен хранит это навсегда (",[42,127,128],{},"LAUNCHPAD_VERSION()",[42,130,131],{},"LAUNCHPAD_CODENAME()","): раздел «О дуэли» показывает это так, как говорят её токены. Более поздний лаунчпад, развёрнутый отдельно, продолжил бы нумерацию с собственным кодовым именем, и его токены называли бы своё.",[111,134,136],{"id":135},"адреса","Адреса",[138,139],"contract-addresses",{},[14,141,142],{},"Duel опирается на эти контракты 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],{},"Uniswap V4 PoolManager",[39,161,162],{},[42,163,164],{},"0x8366a39CC670B4001A1121B8F6A443A643e40951",[24,166,167,170],{},[39,168,169],{},"Universal Router (мейннет)",[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],{},"Адрес hook в V4 содержит список колбэков, которые он реализует. Hook Duel использует:",[18,203,204,214],{},[21,205,206],{},[24,207,208,211],{},[27,209,210],{},"Колбэк",[27,212,213],{},"Что делает",[34,215,216,226,236,246,256,266],{},[24,217,218,223],{},[39,219,220],{},[42,221,222],{},"beforeInitialize",[39,224,225],{},"Открыть пул на hook может только фабрика, и только зарегистрированные пулы дуэли.",[24,227,228,233],{},[39,229,230],{},[42,231,232],{},"beforeAddLiquidity",[39,234,235],{},"Добавлять ликвидность может только фабрика, при запуске.",[24,237,238,243],{},[39,239,240],{},[42,241,242],{},"beforeRemoveLiquidity",[39,244,245],{},"Всегда откатывается: ликвидность заблокирована навсегда.",[24,247,248,253],{},[39,249,250],{},[42,251,252],{},"beforeDonate",[39,254,255],{},"Всегда откатывается.",[24,257,258,263],{},[39,259,260],{},[42,261,262],{},"beforeSwap",[39,264,265],{},"Рассчитывает завершённый раунд, обновляет средние, взимает комиссии и налоги.",[24,267,268,273],{},[39,269,270],{},[42,271,272],{},"afterSwap",[39,274,275],{},"Взимает комиссии, причитающиеся с суммы, которую своп не задал, проверяет, что своп с предварительной оплатой исполнился полностью, а затем выравнивает три пула.",[14,277,278],{},"Комиссии взимаются через return deltas hook, поэтому применяются независимо от того, кто маршрутизирует своп.",[111,280,282],{"id":281},"кто-что-может","Кто что может",[18,284,285,295],{},[21,286,287],{},[24,288,289,292],{},[27,290,291],{},"Участник",[27,293,294],{},"Может",[34,296,297,305,313,321],{},[24,298,299,302],{},[39,300,301],{},"Кто угодно",[39,303,304],{},"Запускать, торговать, рассчитывать завершённые раунды, запускать выплаты создателю или в казначейство, применять предложенные условия по истечении их 48 часов",[24,306,307,310],{},[39,308,309],{},"Создатель дуэли",[39,311,312],{},"Получать комиссии создателя этой дуэли; передать роль вместе с её комиссиями адресу, который её примет",[24,314,315,318],{},[39,316,317],{},"Владелец фабрики",[39,319,320],{},"Приостанавливать новые запуски; через 48 часов менять ограниченные условия будущих дуэлей или казначейство протокола. Текущее казначейство получает накопленные комиссии протокола в момент выплаты. Сразу снизить долю протокола в комиссии за своп всех дуэлей или вернуть её, но никогда не выше их условий.",[24,322,323,326],{},[39,324,325],{},"Никто",[39,327,328],{},"Вывести ликвидность, выпустить токены, переместить банк, изменить комиссию, которую платят трейдеры действующей дуэли, или долю её создателя, поднять долю протокола выше условий дуэли, отнять у дуэли роль создателя, обновить контракты",[111,330,332],{"id":331},"ещё","Ещё",[334,335,336,345],"ul",{},[337,338,339,344],"li",{},[340,341,343],"a",{"href":342},"\u002Fdocs\u002Fduel\u002Fcontracts\u002Fsecurity","Безопасность",": что защищает средства и как это проверялось.",[337,346,347,351],{},[340,348,350],{"href":349},"\u002Fdocs\u002Fduel\u002Fcontracts\u002Fintegrate","Разработка на Duel",": чтение дуэлей и торговля из вашего собственного кода.",{"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,"Контракты Duel в Robinhood Chain: фабрика, hook Uniswap V4, токен, роутер и lens, их адреса, колбэки hook и то, кто что может делать.","md",{},true,"\u002Fru\u002Fdocs\u002Fduel\u002Fcontracts\u002Foverview",{"title":5,"description":363},"ru\u002Fdocs\u002Fduel\u002Fcontracts\u002Foverview","m6lvDS8tXg5ueg8_ytZkZAoIhnFTwMeWobP2frtg8cI",1791232796939]