DEATHStr is off to a chaotic start. I missed the initial rush sadly but did find an issue that got overlooked, which I disclosed to the team and is now patched.


DEATHStr is designed to buy NFTs and list them 20% lower, with the intent of cratering NFT floors to the benefit of DEATHStr itself (proceeds are used to buy and burn the token).
However, there's no delay or other mechanic to prevent a pure arb - anybody that holds a Moonbird could effectively harvest 20% of the contract's fees at any time.
The function above is enough for any Moonbird holder to atomically and risk-free take 20% of DEATHSTR's available fees.
In order, it:
- Determines available fees
- generates a Seaport listing for that amount
- tells DEATHSTR to buy that listing
- Reads the price DEATHSTR listed the NFT at (should be a 20% discount)
- Buys the NFT back
The user ends up with the same NFT they started with, + some fresh ETH. This could be run as long as currentFees() * 0.2 came out to more than the gas to execute.
Suggested fix: implement a one block delay before an NFT can be purchased back from DEATHSTR. This removes atomicity and makes it so that any NFT sold to the protocol has a fair shot at being bought by anybody in the world, so selling for anywhere under floor is suddenly a risk, and even probably a guaranteed loss for the user.
For now, the team has simply added access control to buyTargetNFT, so only approved addresses can trigger purchases. This is fine short term but would love to see a more open solution in the long term.
ETH-3,19%
post-image
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Reward
  • Comment
  • Repost
  • Share
Comment
0/400
No comments
  • Pin

Trade Crypto Anywhere Anytime
qrCode
Scan to download Gate App
Community
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)