DEATHStr ma chaotyczny początek. Niestety, przegapiłem początkowy zryw, ale znalazłem problem, który został przeoczony, o którym poinformowałem zespół i który został teraz naprawiony. DEATHStr jest zaprojektowany do kupowania NFT i wystawiania ich 20% taniej, z zamiarem obniżenia poziomów NFT na korzyść samego DEATHStr (dochody są używane do zakupu i spalania tokena). Jednak nie ma opóźnienia ani innego mechanizmu, który zapobiegałby czystemu arbitrażowi - każdy, kto posiada Moonbirda, mógłby efektywnie zbierać 20% opłat z kontraktu w dowolnym momencie. Funkcja powyżej wystarczy, aby każdy posiadacz Moonbirda mógł atomowo i bez ryzyka zabrać 20% dostępnych opłat DEATHSTR. W kolejności, to: - Określa dostępne opłaty - generuje listing Seaport na tę kwotę - mówi DEATHSTR, aby kupił ten listing - Odczytuje cenę, po której DEATHSTR wystawił NFT (powinno być to 20% zniżki) - Kupuje NFT z powrotem Użytkownik kończy z tym samym NFT, z którym zaczął, + trochę świeżego ETH. To może być uruchamiane tak długo, jak `currentFees() * 0.2` przekracza koszty gazu do wykonania. Zaproponowane rozwiązanie: wprowadzenie opóźnienia o jeden blok przed tym, jak NFT może być kupione z powrotem od DEATHSTR. To usuwa atomowość i sprawia, że każde NFT sprzedane do protokołu ma uczciwą szansę na zakup przez kogokolwiek na świecie, więc sprzedaż za cokolwiek poniżej poziomu staje się nagle ryzykiem, a nawet prawdopodobnie gwarantowaną stratą dla użytkownika. Na razie zespół po prostu dodał kontrolę dostępu do buyTargetNFT, więc tylko zatwierdzone adresy mogą inicjować zakupy. To jest w porządku w krótkim okresie, ale chciałbym zobaczyć bardziej otwarte rozwiązanie w dłuższym okresie.
Uważam, że to bardziej kwestia narracyjna niż mechaniczna. DEATHSTR wciąż jest kupowane i spalane, jednak nie ma już żadnego aspektu, który można by uznać za "atak" na podłogi nft. W rzeczywistości całkowicie odłącza to od kolekcji, na którą jest skierowane, poza tym, że arbitrażysta musi posiadać nft z docelowej kolekcji, aby zbierać opłaty.
29