Futuros
Aceda a centenas de contratos perpétuos
CFD
Ouro
Plataforma de ativos tradicionais globais
Opções
Hot
Negoceie Opções Vanilla ao estilo europeu
Conta Unificada
Maximize a eficiência do seu capital
Negociação de demonstração
Introdução à negociação de futuros
Prepare-se para a sua negociação de futuros
Eventos de futuros
Participe em eventos para recompensas
Negociação de demonstração
Utilize fundos virtuais para experimentar uma negociação sem riscos
Lançamento
CandyDrop
Recolher doces para ganhar airdrops
Launchpool
Faça staking rapidamente, ganhe potenciais novos tokens
HODLer Airdrop
Detenha GT e obtenha airdrops maciços de graça
Pre-IPOs
Desbloquear acesso completo a IPO de ações globais
Pontos Alpha
Negoceie ativos on-chain para airdrops
Pontos de futuros
Ganhe pontos de futuros e receba recompensas de airdrop
Investimento
Simple Earn
Ganhe juros com tokens inativos
Investimento automático
Invista automaticamente de forma regular.
Investimento Duplo
Aproveite a volatilidade do mercado
Soft Staking
Ganhe recompensas com staking flexível
Empréstimo de criptomoedas
0 Fees
Dê em garantia uma criptomoeda para pedir outra emprestada
Centro de empréstimos
Centro de empréstimos integrado
Promoções
Centro de atividades
Participe de atividades para recompensas
Referência
20 USDT
Convide amigos para recompensas de ref.
Programa de afiliados
Ganhe recomp. de comissão exclusivas
Gate Booster
Aumente a influência e ganhe airdrops
Announcements
Atualizações na plataforma em tempo real
Blog da Gate
Artigos da indústria cripto
Serviços VIP
Enormes descontos nas taxas
Gestão de ativos
Solução integral para a gestão de ativos
Institucional
Soluções de ativos digitais para empresas
Desenvolvedores (API)
Conecta-se ao ecossistema de aplicações Gate
Transferência Bancária OTC
Deposite e levante moeda fiduciária
Programa de corretora
Mecanismo generoso de reembolso de API
AI
Gate AI
O seu parceiro de IA conversacional tudo-em-um
Gate AI Bot
Utilize o Gate AI diretamente na sua aplicação social
GateClaw
Gate Lagosta Azul, pronto a usar
Gate for AI Agent
Infraestrutura de IA, Gate MCP, Skills e CLI
Gate Skills Hub
Mais de 10 mil competências
Do escritório à negociação, uma biblioteca de competências tudo-em-um torna a IA ainda mais útil
GateRouter
Escolha inteligentemente entre mais de 40 modelos de IA, com 0% de taxas adicionais
Quero compartilhar algo bastante importante que talvez você ainda não compreenda completamente - que é a vulnerabilidade de reentrancy em contratos inteligentes. Se você está a desenvolver dapp ou a trabalhar com blockchain, isto é um conhecimento obrigatório.
Qual é o problema básico da reentrancy? Acontece quando um contrato inteligente chama outro contrato, e esse contrato pode fazer uma chamada de volta ao contrato original enquanto ainda está em execução. Um atacante pode explorar esse período para roubar fundos.
Imagine que o ContractA tem 10 Ether e o ContractB enviou 1 Ether para ele. Quando o ContractB chama a função de retirada, o ContractA verifica se o saldo é maior que 0, e se for, envia Ether de volta. Mas aqui está o problema - o ContractA só atualiza o saldo após enviar o dinheiro. Assim, durante o envio, se o ContractB tiver uma função fallback, ela pode chamar novamente a função de retirada do ContractA. Como o saldo ainda não foi atualizado, a verificação passa novamente, e ele recebe mais 1 Ether. Esse ciclo continua até que o ContractA fique sem fundos.
Vou mostrar três maneiras de proteger o contrato contra esse ataque de reentrancy.
A primeira é usar o modificador nonReentrant. A ideia é bem simples - você bloqueia o contrato enquanto a função está em execução. Se alguém tentar chamar novamente essa função, a chamada será rejeitada porque o contrato está bloqueado. Você deve liberar o bloqueio somente após a execução completa, e aí a verificação falhará se tentar reentrar.
A segunda é usar o padrão Checks-Effects-Interactions. Em vez de atualizar o saldo após enviar o dinheiro, você atualiza imediatamente após a verificação, mas antes de fazer a transferência. Assim, mesmo que outro contrato chame de volta, o saldo já estará zerado, e a verificação falhará. Por isso, a ordem é muito importante - verificar primeiro, depois aplicar efeitos, e por último interagir com outros contratos.
A terceira é criar um guard global de reentrancy, especialmente útil quando você tem múltiplos contratos interagindo entre si. Em vez de proteger cada função individualmente, você cria um contrato de guarda comum, que armazena o estado de bloqueio em um local central. Quando qualquer contrato tenta executar uma função protegida, ela verifica com esse guard. Se o guard indicar que o contrato está bloqueado, a transação é rejeitada. Essa abordagem é poderosa porque impede reentrancy não só dentro de um contrato, mas também entre vários contratos.
Recomendo aplicar todas as três técnicas conforme a situação. Para funções de retirada ou transferência de ativos, sempre use nonReentrant ou Checks-Effects-Interactions. E, se seu projeto tiver um sistema complexo de contratos, considere usar um GlobalReentrancyGuard como uma camada adicional de proteção.
Essa vulnerabilidade é uma das mais comuns e causa perdas financeiras significativas, portanto, entender bem o reentrancy é fundamental se você deseja escrever contratos inteligentes seguros.