DEATHStr ha tenido un comienzo caótico. Lamentablemente, me perdí la prisa inicial, pero encontré un problema que se pasó por alto, el cual informé al equipo y ahora está solucionado. DEATHStr está diseñado para comprar NFTs y listarlos un 20% más bajo, con la intención de hacer caer los precios mínimos de los NFTs en beneficio de DEATHStr (los ingresos se utilizan para comprar y quemar el token). Sin embargo, no hay ningún retraso ni otro mecanismo para evitar un arbitraje puro: cualquier persona que tenga un Moonbird podría efectivamente cosechar el 20% de las tarifas del contrato en cualquier momento. La función anterior es suficiente para que cualquier poseedor de un Moonbird tome de manera atómica y sin riesgo el 20% de las tarifas disponibles de DEATHSTR. En orden, hace lo siguiente: - Determina las tarifas disponibles - Genera una lista de Seaport para esa cantidad - Indica a DEATHSTR que compre esa lista - Lee el precio al que DEATHSTR listó el NFT (debería ser un 20% de descuento) - Vuelve a comprar el NFT El usuario termina con el mismo NFT con el que comenzó, + algo de ETH fresco. Esto podría ejecutarse siempre que `currentFees() * 0.2` resultara en más que el gas para ejecutar. Solución sugerida: implementar un retraso de un bloque antes de que un NFT pueda ser comprado de nuevo a DEATHSTR. Esto elimina la atomicidad y hace que cualquier NFT vendido al protocolo tenga una oportunidad justa de ser comprado por cualquier persona en el mundo, por lo que vender por debajo del precio mínimo se convierte repentinamente en un riesgo, y probablemente en una pérdida garantizada para el usuario. Por ahora, el equipo simplemente ha añadido control de acceso a buyTargetNFT, por lo que solo las direcciones aprobadas pueden activar compras. Esto está bien a corto plazo, pero me encantaría ver una solución más abierta a largo plazo.
Consideraría esto más un problema narrativo que mecánico. DEATHSTR sigue siendo comprado y quemado de todos modos, sin embargo, ya no hay ningún aspecto que se pueda considerar un "ataque" a los pisos de nft. De hecho, lo desconecta por completo de la colección que está atacando, aparte del hecho de que el arbitrajista debe poseer un nft de la colección objetivo para poder cosechar las tarifas.
38