DEATHStr is chaotisch van start gegaan. Helaas heb ik de eerste rush gemist, maar vond wel een probleem dat over het hoofd werd gezien, wat ik aan het team heb gemeld en dat nu is gepatcht. DEATHStr is ontworpen om NFT's te kopen en deze 20% lager te vermelden, met de bedoeling om de NFT-vloeren te laten kelderen ten gunste van DEATHStr zelf (de opbrengsten worden gebruikt om de token te kopen en te verbranden). Echter, er is geen vertraging of andere mechaniek om een pure arb te voorkomen - iedereen die een Moonbird bezit, kan effectief 20% van de contractkosten op elk moment oogsten. De functie hierboven is voldoende voor elke Moonbird-houder om atomisch en risicoloos 20% van DEATHSTR's beschikbare kosten te nemen. In volgorde: - Bepaalt beschikbare kosten - genereert een Seaport-vermelding voor dat bedrag - vertelt DEATHSTR om die vermelding te kopen - Leest de prijs waarvoor DEATHSTR de NFT heeft vermeld (zou een korting van 20% moeten zijn) - Koopt de NFT terug De gebruiker eindigt met dezelfde NFT waarmee ze begonnen, + wat verse ETH. Dit kan worden uitgevoerd zolang `currentFees() * 0.2` meer oplevert dan de gas om uit te voeren. Voorgestelde oplossing: implementeer een vertraging van één blok voordat een NFT kan worden teruggekocht van DEATHSTR. Dit verwijdert de atomiciteit en zorgt ervoor dat elke NFT die aan het protocol wordt verkocht een eerlijke kans heeft om door iemand in de wereld te worden gekocht, zodat verkopen voor minder dan de vloer plotseling een risico is, en zelfs waarschijnlijk een gegarandeerd verlies voor de gebruiker. Voor nu heeft het team simpelweg toegang tot buyTargetNFT toegevoegd, zodat alleen goedgekeurde adressen aankopen kunnen activeren. Dit is op korte termijn prima, maar ik zou graag een meer open oplossing op lange termijn zien.
Ik beschouw dit meer als een narratief probleem dan een mechanisch probleem. DEATHSTR wordt nog steeds gekocht en verbrand, maar er is geen enkel aspect dat als een "aanval" op nft-vloeren kan worden beschouwd. In feite ontkoppelt het het volledig van de collectie die het target, afgezien van het feit dat de arbitrageur een nft uit de doelcollectie moet bezitten om de vergoedingen te kunnen innen.
35