[{"data":1,"prerenderedAt":238},["ShallowReactive",2],{"docs:ro:\u002Fdocs\u002Fduel\u002Fcontracts\u002Fsecurity":3},{"id":4,"title":5,"body":6,"cover":229,"description":230,"extension":231,"meta":232,"navigation":233,"path":234,"seo":235,"stem":236,"__hash__":237},"docs\u002Fro\u002Fdocs\u002Fduel\u002Fcontracts\u002Fsecurity.md","Securitate",{"type":7,"value":8,"toc":219},"minimark",[9,13,18,35,39,102,122,126,152,156,182,185,199,203,213],[10,11,5],"h1",{"id":12},"securitate",[14,15,17],"h2",{"id":16},"ce-deține-valoare","Ce deține valoare",[19,20,21,29],"ul",{},[22,23,24,28],"li",{},[25,26,27],"strong",{},"ETH-ul și tokenurile poolurilor",", în poziții pe care nimeni nu le poate retrage. ETH-ul unei tabere iese din\npoolul ei doar când acea tabără e vândută în el: de un trader sau de realinierea hookului, după ce o tranzacție a\nîndepărtat cele trei prețuri unul de altul.",[22,30,31,34],{},[25,32,33],{},"Poturile, comisioanele de creator și comisioanele de protocol",", deținute de hook sub formă de creanțe în ETH în\nPoolManagerul Uniswap V4, contabilizate separat pentru fiecare duel.",[14,36,38],{"id":37},"ce-o-protejează","Ce o protejează",[19,40,41,47,57,68,74,80,86,96],{},[22,42,43,46],{},[25,44,45],{},"Lichiditate blocată."," Numai factory-ul poate deschide poolurile înregistrate sau adăuga lichiditatea lor de lansare; retragerile și donațiile se anulează.",[22,48,49,52,53,56],{},[25,50,51],{},"Beneficiari limitați."," Potul răscumpără numai câștigătorul propriului duel; comisioanele de creator merg numai la creatorul duelului, portofelul care l-a lansat sau o adresă căreia i-a cedat rolul și care l-a acceptat. Comisioanele de protocol merg la ",[25,54,55],{},"trezoreria actuală",", pe care proprietarul factory-ului o poate schimba după 48 de ore, inclusiv pentru comisioanele de protocol deja acumulate.",[22,58,59,62,63,67],{},[25,60,61],{},"Puteri limitate ale factory-ului."," Tokenurile nu au proprietar sau funcție de mint, iar hookul nu poate fi actualizat sau suspendat. Proprietarul poate suspenda lansările noi, propune condiții limitate pentru duelurile viitoare sau schimba trezoreria după termen. Poate și să scadă imediat partea protocolului din comisionul de swap al tuturor duelurilor, până la zero, sau s-o ridice la loc, niciodată peste condițiile duelului: ce nu ia protocolul merge în poturi. Proprietarul poate renunța definitiv la rol (",[64,65,66],"code",{},"renounceOwnership","): condițiile, trezoreria, rata protocolului și o suspendare rămân atunci cum sunt, cu excepția unei schimbări deja propuse, pe care oricine o mai poate aplica după termen.",[22,69,70,73],{},[25,71,72],{},"Decontare înainte de swap."," Primul swap după închidere decontează media încheiată înainte de tranzacționare. Plafonul răscumpărării este circa 10% peste o referință păstrată cu precizie de fracțiuni de tick: o medie exponențială la 30 de minute a tickurilor poolului ETH, limitată la cel mult tickul curent, astfel încât urmează prețul în jos imediat.",[22,75,76,79],{},[25,77,78],{},"Runde bazate numai pe ETH."," Repartiția și media folosesc cele două pooluri ETH. O schimbare A\u002FB fără mișcarea unui preț în ETH nu schimbă semnalul sau activitatea unei runde altfel liniștite.",[22,81,82,85],{},[25,83,84],{},"Comisioane pe execuții complete."," Swapurile taxate în avans se anulează dacă nu pot executa întreaga sumă cerută. Taxa de rețea este separată.",[22,87,88,91,92,95],{},[25,89,90],{},"Realiniere izolată."," Se păstrează numai bucle profitabile, limitate de ETH-ul poolului care cumpără tokenurile. O încercare eșuată se anulează și se sare; din lipsă de gaz se anulează swapul (",[64,93,94],{},"ArbitrageStarved","), ca un apelant să nu o poată sări reținând gaz. Nu se garantează alinierea prețurilor sau protecția împotriva tuturor pierderilor de tranzacționare.",[22,97,98,101],{},[25,99,100],{},"Aceleași reguli pe toate rutele."," Hookul ia comisioanele, taxele și arderile, indiferent dacă routerul este al Duel sau alt router V4.",[103,104,105,106,109,110,113,114,117,118,121],"p",{},"Fabrica pornește cu lansările suspendate. Cât timp ",[64,107,108],{},"paused()"," este true, doar ",[64,111,112],{},"owner()"," poate lansa un duel; apelurile celorlalți sunt anulate cu ",[64,115,116],{},"CreationPaused",". Proprietarul deschide lansările prin ",[64,119,120],{},"setPaused(false)",". Duelurile existente se tranzacționează în continuare.",[14,123,125],{"id":124},"ce-afișează-site-ul","Ce afișează site-ul",[19,127,128,134,140,146],{},[22,129,130,133],{},[25,131,132],{},"Imagini doar de la site."," Paginile afișează imaginile unui duel doar de la adresa Duel și doar imagini procesate de\nsite: un JPEG, PNG sau WebP citit mai întâi din antet (cel mult 1536 × 1536 de pixeli și 5 MB), decodat în WebAssembly,\nîncadrat în 1024 de pixeli și recodificat în WebP, fără metadatele lui. Politica de securitate a paginilor nu le lasă\nsă încarce imagini de altundeva.",[22,135,136,139],{},[25,137,138],{},"Codecuri ținute deoparte."," Imaginile sunt decodate într-un Worker separat, pe care doar site-ul îl poate apela și\ncare nu deține nimic: nicio cheie, niciun spațiu de stocare. O vulnerabilitate într-un codec ar atinge doar imaginea\npe care o citește. Site-ul verifică ce îi răspunde acest Worker (un WebP static, de mărimea așteptată) înainte să-l\npăstreze, iar decodoarele scrise în C pornesc de la zero pentru fiecare imagine.",[22,141,142,145],{},[25,143,144],{},"Duelurile lansate direct din contract."," Detaliile lor pot numi orice adresă. Site-ul nu afișează nicio imagine\nhttps; o imagine IPFS o descarcă o singură dată, de la un gateway public (cel mult 5 MB și 10 secunde), o procesează\nca pe o încărcare și își afișează propria copie sau inițialele taberei.",[22,147,148,151],{},[25,149,150],{},"Încărcări limitate."," Site-ul primește imagini doar din propriile pagini: zece pe minut de la aceeași adresă și un\nnumăr limitat pe zi. O imagine pe care n-o folosește niciun duel este ștearsă după o zi.",[14,153,155],{"id":154},"cum-a-fost-verificat","Cum a fost verificat",[19,157,158,164,170,176],{},[22,159,160,163],{},[25,161,162],{},"Teste automate"," acoperă comportamentul contractelor, aplicația web și botul de alerte. Acoperirea este o măsură a testelor, nu dovada că toate comportamentele posibile sunt sigure.",[22,165,166,169],{},[25,167,168],{},"Teste pe fork"," verifică integrarea cu contractele Uniswap V4 de pe Robinhood Chain, inclusiv Universal Router, Permit2 și V4 Quoter.",[22,171,172,175],{},[25,173,174],{},"Teste de regresie"," păstrează cazurile găsite în revizuirea internă, inclusiv contabilitatea comisioanelor, cazurile-limită de lansare, decontarea și poolurile epuizate.",[22,177,178,181],{},[25,179,180],{},"Teste de invariante"," verifică contabilitatea pe secvențe aleatorii de tranzacții, decontări și revendicări: creanțele în ETH trebuie să corespundă sumelor datorate, fără tokenuri intermediare rămase în hook, factory sau router. Trecerea execuțiilor configurate nu dovedește siguranța tuturor secvențelor posibile.",[103,183,184],{},"Revizuirea internă a găsit și a reparat o rută cu ieșire exactă care ocolea taxa anti-snipe, o repartiție care nu urma\no tabără cumpărată singură, pooluri golite de ETH citite greșit de prețul de referință al răscumpărării și linkuri\nnesigure în metadatele unui duel.",[186,187,190],"callout",{"title":188,"type":189},"Încă fără audit extern","warning",[103,191,192,193,198],{},"Contractele au trecut printr-o revizuire internă, nu printr-un audit extern. Nu pot fi actualizate: un bug descoperit\nmai târziu nu ar putea fi reparat în duelurile active. Citește ",[194,195,197],"a",{"href":196},"\u002Fdocs\u002Fduel\u002Frisks","Riscurile",".",[14,200,202],{"id":201},"raportarea-unei-vulnerabilități","Raportarea unei vulnerabilități",[103,204,205,206,212],{},"Dacă crezi că ai găsit o vulnerabilitate, îți mulțumim că îți faci timp s-o raportezi. Scrie-ne în privat pe Telegram,\nla ",[194,207,211],{"href":208,"rel":209},"https:\u002F\u002Ft.me\u002Fchatwithdivine",[210],"nofollow","@chatwithdivine",", ce ai găsit și, dacă poți, cum se reproduce, și lasă-ne timp s-o\nanalizăm înainte să spui ceva public. Îți răspundem repede și te ținem la curent.",[103,214,215,216,198],{},"Nu scriem niciodată primii: ai încredere doar în ",[194,217,211],{"href":208,"rel":218},[210],{"title":220,"searchDepth":221,"depth":222,"links":223},"",2,3,[224,225,226,227,228],{"id":16,"depth":221,"text":17},{"id":37,"depth":221,"text":38},{"id":124,"depth":221,"text":125},{"id":154,"depth":221,"text":155},{"id":201,"depth":221,"text":202},null,"Cum protejează Duel fondurile poolurilor, poturile și comisioanele: lichiditate blocată, puteri limitate ale factory-ului, decontare, teste automate și revizuire internă.","md",{},true,"\u002Fro\u002Fdocs\u002Fduel\u002Fcontracts\u002Fsecurity",{"title":5,"description":230},"ro\u002Fdocs\u002Fduel\u002Fcontracts\u002Fsecurity","Y_nLTrhWcKh1pPWPiY99tYQPKq8B-NvmJ6CRrfw99GA",1791231656627]