[{"data":1,"prerenderedAt":238},["ShallowReactive",2],{"docs:pt:\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\u002Fpt\u002Fdocs\u002Fduel\u002Fcontracts\u002Fsecurity.md","Segurança",{"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},"segurança",[14,15,17],"h2",{"id":16},"o-que-tem-valor","O que tem valor",[19,20,21,29],"ul",{},[22,23,24,28],"li",{},[25,26,27],"strong",{},"O ETH e os tokens dos pools",", em posições que ninguém pode retirar. O ETH de um lado só sai do pool quando esse lado é vendido nele: por um trader, ou pelo realinhamento do hook depois que uma negociação afastou os três preços.",[22,30,31,34],{},[25,32,33],{},"Os potes, as taxas do criador e as taxas do protocolo",", guardados pelo hook como créditos de ETH no PoolManager da Uniswap V4, contabilizados separadamente para cada duelo.",[14,36,38],{"id":37},"o-que-o-protege","O que o protege",[19,40,41,47,57,68,74,80,86,96],{},[22,42,43,46],{},[25,44,45],{},"Liquidez travada."," Só a fábrica pode abrir pools registrados ou adicionar a liquidez de lançamento deles; saques e doações revertem.",[22,48,49,52,53,56],{},[25,50,51],{},"Destinatários limitados."," Um pote só compra o vencedor do próprio duelo; as taxas do criador só vão para o criador do duelo: a carteira que o lançou ou um endereço para o qual ela passou o papel e que o aceitou. As taxas do protocolo vão para a ",[25,54,55],{},"tesouraria atual",", que o dono da fábrica pode mudar depois de 48 horas, inclusive para as taxas do protocolo já acumuladas.",[22,58,59,62,63,67],{},[25,60,61],{},"Poderes limitados da fábrica."," Os tokens não têm dono nem função de mint, e o hook não pode ser atualizado nem pausado. O dono da fábrica pode pausar novos lançamentos, propor termos limitados para duelos futuros ou mudar a tesouraria depois do prazo. Ele também pode reduzir na hora a parte do protocolo na taxa de swap de todos os duelos, até zero, ou aumentá-la de novo, nunca acima dos termos do duelo: o que o protocolo não retém vai para os potes. O dono pode renunciar ao papel de vez (",[64,65,66],"code",{},"renounceOwnership","): os termos, a tesouraria, a alíquota do protocolo e uma pausa ficam então como estão, exceto uma mudança já proposta, que qualquer pessoa ainda pode aplicar depois do prazo.",[22,69,70,73],{},[25,71,72],{},"Liquidação antes do swap."," O primeiro swap depois de um fechamento liquida a média encerrada antes de negociar. O teto de uma recompra fica cerca de 10% acima de uma referência guardada com precisão de frações de tick: uma média exponencial de 30 minutos dos ticks do pool de ETH, limitada ao tick atual quando o ultrapassa, para que acompanhe o preço para baixo na hora.",[22,75,76,79],{},[25,77,78],{},"Rodadas só em ETH."," A divisão e a média da rodada usam os dois pools de ETH. Uma troca A\u002FB que não move nenhum preço em ETH não muda nem o sinal nem a atividade de uma rodada que, de outra forma, estaria parada.",[22,81,82,85],{},[25,83,84],{},"Taxas só com execução completa."," Swaps cobrados antecipadamente revertem se não conseguirem completar o valor pedido. O gás da rede é à parte.",[22,87,88,91,92,95],{},[25,89,90],{},"Realinhamento isolado."," Só são mantidos os loops lucrativos, limitados pelo ETH do pool vendedor. Uma tentativa que falha é revertida e pulada; por falta de gás, quem reverte é o swap (",[64,93,94],{},"ArbitrageStarved","), para que quem chama não possa pulá-la segurando gás. Isso não garante que os preços coincidam nem protege contra todas as perdas de negociação.",[22,97,98,101],{},[25,99,100],{},"As mesmas regras em todas as rotas."," O hook cobra taxas, impostos e queimas seja o router o do Duel ou outro router V4.",[103,104,105,106,109,110,113,114,117,118,121],"p",{},"A fábrica começa com os lançamentos pausados. Enquanto ",[64,107,108],{},"paused()"," for true, só ",[64,111,112],{},"owner()"," pode lançar um duelo; as chamadas dos demais revertem com ",[64,115,116],{},"CreationPaused",". O dono abre os lançamentos com ",[64,119,120],{},"setPaused(false)",". Os duelos existentes continuam sendo negociados.",[14,123,125],{"id":124},"o-que-o-site-mostra","O que o site mostra",[19,127,128,134,140,146],{},[22,129,130,133],{},[25,131,132],{},"Imagens só do site."," As páginas mostram as imagens de um duelo só a partir do próprio endereço do Duel, e só imagens que o site processou: um JPEG, PNG ou WebP lido primeiro pelo cabeçalho (1536 × 1536 pixels e 5 MB no máximo), decodificado em WebAssembly, ajustado a 1024 pixels e codificado de novo como WebP, sem os metadados. A política de segurança das páginas não deixa que elas carreguem imagens de nenhum outro lugar.",[22,135,136,139],{},[25,137,138],{},"Codecs isolados."," As imagens são decodificadas em um Worker próprio, que só o site acessa e que não guarda nada: nem chave, nem armazenamento. Uma falha em um codec atingiria só a imagem que ele lê. O site verifica o que esse Worker responde (um WebP estático do tamanho esperado) antes de guardá-lo, e os decodificadores em C recomeçam do zero a cada imagem.",[22,141,142,145],{},[25,143,144],{},"Duelos lançados direto pelo contrato."," Os dados deles podem indicar qualquer endereço. O site não mostra imagens https; ele busca uma imagem IPFS uma única vez, em um gateway público (5 MB e 10 segundos no máximo), processa-a como um upload e mostra a própria cópia, ou as iniciais do lado.",[22,147,148,151],{},[25,149,150],{},"Uploads com limites."," O site só aceita imagens das próprias páginas: dez por minuto de um mesmo endereço e um número limitado por dia. Uma imagem que nenhum duelo usa é apagada depois de um dia.",[14,153,155],{"id":154},"como-foi-verificado","Como foi verificado",[19,157,158,164,170,176],{},[22,159,160,163],{},[25,161,162],{},"Testes automatizados"," cobrem o comportamento dos contratos, o app web e o bot de alertas. A cobertura é uma métrica de testes, não a prova de que todo comportamento possível é seguro.",[22,165,166,169],{},[25,167,168],{},"Testes em fork"," exercitam a integração com os contratos da Uniswap V4 implantados na Robinhood Chain, incluindo o Universal Router, o Permit2 e o V4 Quoter.",[22,171,172,175],{},[25,173,174],{},"Testes de regressão"," guardam os casos encontrados durante a revisão interna, como a contabilidade das taxas, casos-limite do lançamento, a liquidação e pools esgotados.",[22,177,178,181],{},[25,179,180],{},"Testes de invariantes"," verificam a contabilidade ao longo de sequências aleatórias de negociações, liquidações e resgates: os créditos de ETH devem bater com os valores devidos, e nenhum token intermediário deve ficar no hook, na fábrica ou no router. Passar nas execuções configuradas não garante a segurança para toda sequência possível.",[103,183,184],{},"A revisão interna encontrou e corrigiu uma rota de saída exata que escapava do imposto antissnipe, uma divisão que não acompanhava um lado comprado sozinho, pools esgotados lidos errado pela referência de preço da recompra e links inseguros nos metadados de um duelo.",[186,187,190],"callout",{"title":188,"type":189},"Ainda sem auditoria externa","warning",[103,191,192,193,198],{},"Os contratos passaram por uma revisão interna, não por uma auditoria externa. Eles não podem ser atualizados: um bug encontrado depois não poderia ser corrigido nos duelos ativos. Leia ",[194,195,197],"a",{"href":196},"\u002Fdocs\u002Fduel\u002Frisks","Riscos",".",[14,200,202],{"id":201},"reportar-uma-vulnerabilidade","Reportar uma vulnerabilidade",[103,204,205,206,212],{},"Se você acha que encontrou uma vulnerabilidade, obrigado por dedicar seu tempo para reportá-la. Escreva para nós em privado no Telegram, em ",[194,207,211],{"href":208,"rel":209},"https:\u002F\u002Ft.me\u002Fchatwithdivine",[210],"nofollow","@chatwithdivine",", contando o que encontrou e, se puder, como reproduzir, e nos dê tempo para investigar antes de divulgar qualquer coisa publicamente. Responderemos rápido e manteremos você informado.",[103,214,215,216,198],{},"Nunca escrevemos primeiro: confie apenas em ",[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,"Como o Duel protege os fundos dos pools, os potes e as taxas: liquidez travada, poderes limitados da fábrica, regras de liquidação, testes automatizados e uma revisão interna.","md",{},true,"\u002Fpt\u002Fdocs\u002Fduel\u002Fcontracts\u002Fsecurity",{"title":5,"description":230},"pt\u002Fdocs\u002Fduel\u002Fcontracts\u002Fsecurity","XHJEohzfLgrGViapANDtmwaP6ShYpYu_F0LVsjh_dVI",1791231660673]