DEATHStr teve um início caótico. Infelizmente, perdi a corrida inicial, mas encontrei um problema que passou despercebido, o qual divulguei à equipa e já foi corrigido.
DEATHStr foi desenhado para comprar NFTs e listá-los a 20% abaixo, com a intenção de derrubar os pisos dos NFTs em benefício do próprio DEATHStr (os lucros são usados para comprar e queimar o token). No entanto, não há atraso nem outro mecanismo para impedir um arbitragem pura - qualquer pessoa que detenha um Moonbird poderia efetivamente colher 20% das taxas do contrato a qualquer momento. A função acima é suficiente para que qualquer detentor de Moonbird possa, de forma atómica e sem risco, retirar 20% das taxas disponíveis do DEATHSTR. Para isso, ela: - Determina as taxas disponíveis - Gera uma listagem no Seaport para esse valor - Diz ao DEATHSTR para comprar essa listagem - Lê o preço ao qual o DEATHSTR listou o NFT (deveria ter um desconto de 20%) - Compra o NFT de volta O utilizador acaba com o mesmo NFT com que começou, mais algum ETH fresco. Isto pode ser feito enquanto currentFees() * 0.2 resultar em mais do que o gás necessário para executar. Solução sugerida: implementar um atraso de um bloco antes que um NFT possa ser comprado de volta do DEATHSTR. Isto remove a atomicidade e faz com que qualquer NFT vendido ao protocolo tenha uma hipótese justa de ser comprado por qualquer pessoa no mundo, tornando a venda por qualquer valor abaixo do piso de repente um risco, e provavelmente uma perda garantida para o utilizador. Por agora, a equipa simplesmente adicionou controlo de acesso ao buyTargetNFT, para que apenas endereços aprovados possam desencadear compras. Isto é suficiente a curto prazo, mas gostaria de ver uma solução mais aberta a longo prazo.
Esta página pode conter conteúdo de terceiros, que é fornecido apenas para fins informativos (não para representações/garantias) e não deve ser considerada como um endosso de suas opiniões pela Gate nem como aconselhamento financeiro ou profissional. Consulte a Isenção de responsabilidade para obter detalhes.
DEATHStr teve um início caótico. Infelizmente, perdi a corrida inicial, mas encontrei um problema que passou despercebido, o qual divulguei à equipa e já foi corrigido.
DEATHStr foi desenhado para comprar NFTs e listá-los a 20% abaixo, com a intenção de derrubar os pisos dos NFTs em benefício do próprio DEATHStr (os lucros são usados para comprar e queimar o token).
No entanto, não há atraso nem outro mecanismo para impedir um arbitragem pura - qualquer pessoa que detenha um Moonbird poderia efetivamente colher 20% das taxas do contrato a qualquer momento.
A função acima é suficiente para que qualquer detentor de Moonbird possa, de forma atómica e sem risco, retirar 20% das taxas disponíveis do DEATHSTR.
Para isso, ela:
- Determina as taxas disponíveis
- Gera uma listagem no Seaport para esse valor
- Diz ao DEATHSTR para comprar essa listagem
- Lê o preço ao qual o DEATHSTR listou o NFT (deveria ter um desconto de 20%)
- Compra o NFT de volta
O utilizador acaba com o mesmo NFT com que começou, mais algum ETH fresco. Isto pode ser feito enquanto currentFees() * 0.2 resultar em mais do que o gás necessário para executar.
Solução sugerida: implementar um atraso de um bloco antes que um NFT possa ser comprado de volta do DEATHSTR. Isto remove a atomicidade e faz com que qualquer NFT vendido ao protocolo tenha uma hipótese justa de ser comprado por qualquer pessoa no mundo, tornando a venda por qualquer valor abaixo do piso de repente um risco, e provavelmente uma perda garantida para o utilizador.
Por agora, a equipa simplesmente adicionou controlo de acesso ao buyTargetNFT, para que apenas endereços aprovados possam desencadear compras. Isto é suficiente a curto prazo, mas gostaria de ver uma solução mais aberta a longo prazo.