DEATHStr alkaa kaoottisesti. Valitettavasti missasin alkuperäisen kiireen, mutta löysin ongelman, joka jäi huomaamatta, ja kerroin siitä tiimille ja joka on nyt korjattu. DEATHStr on suunniteltu ostamaan NFT:itä ja listaamaan ne 20 % halvemmalla hinnalla, tarkoituksena romuttaa NFT-lattioita DEATHStr:n hyödyksi (tuotot käytetään tokenin ostamiseen ja polttamiseen). Kuitenkaan ei ole viivettä tai muuta mekaniikkaa, joka estäisi puhtaan arbin – kuka tahansa, jolla on Moonbird, voisi käytännössä kerätä 20 % sopimuksen palkkioista milloin tahansa. Yllä oleva toiminto riittää siihen, että jokainen Moonbirdin haltija voi ottaa atomisesti ja riskittömästi 20 % DEATHSTR:n käytettävissä olevista maksuista. Siinä järjestyksessä se: - Määrittää käytettävissä olevat maksut - luo Seaport-listauksen kyseiselle summalle - käskee DEATHSTR:ää ostamaan kyseisen ilmoituksen - Lukee hinnan, jonka DEATHSTR listasi NFT:n (pitäisi olla 20 % alennus) - Ostaa NFT:n takaisin Käyttäjä saa lopulta saman NFT:n kuin aloitti, + tuoretta ETH:tä. Tätä voitiin ajaa, kunhan 'currentFees() * 0.2' antoi enemmän kuin kaasun suoritettavaksi. Ehdotettu korjaus: toteuta yhden lohkon viive ennen kuin NFT voidaan ostaa takaisin DEATHSTR:ltä. Tämä poistaa atomisyyden ja mahdollistaa sen, että protokollaan myytävät NFT:t voivat tulla ostettavaksi kenen tahansa toimesta maailmassa, joten myyminen missä tahansa lattian alla on yhtäkkiä riski ja todennäköisesti jopa taattu tappio käyttäjälle. Toistaiseksi tiimi on yksinkertaisesti lisännyt pääsynhallinnan buyTargetNFT:hen, joten vain hyväksytyt osoitteet voivat käynnistää ostot. Tämä on lyhyellä aikavälillä ok, mutta haluaisin nähdä avoimemman ratkaisun pitkällä aikavälillä.
Pitäisin tätä enemmän kertomuksellisena ongelmana kuin mekaanisena. DEATHSTR ostetaan ja poltetaan silti, mutta mitään osaa ei enää ole "hyökkäyksenä" nft-kerroksilla. Itse asiassa se irrottaa sen kokonaan kohteestaan keräyksestä, paitsi että arbitrageurin täytyy pitää NFT kohdekeräyksestä kerätäkseen maksut.
25