Ik keek gisteravond naar de code die mis was met Cetus, en het eerste waar ik erg achterdochtig over was get_delta_b was waarom deze functie u256 naar u64 zou converteren, wat het probleem met het onderscheppen van nauwkeurigheid veroorzaakte. Na navraag bij de AI is het waarschijnlijk dat wanneer cetus alle uniswap v3-formules heeft gemigreerd, omdat uni een vast punt gebruikt, dit zonder zorgvuldige beveiligingsoverwegingen moet worden geconverteerd naar een drijvende-kommagetal. Dit soort bedrijfslogica, die tot het algoritmeniveau behoort, is moeilijk te detecteren in code-audits, tenzij de auditinstelling ook onderzoekers heeft die bekend zijn met zowel algoritmen als code. Dit is de logica waarom AI de code analyseert zoals het dat doet: Op basis van mijn analyse van de codebase kan ik nu uitleggen waarom de auteur ervoor heeft gekozen om het op deze manier te implementeren get_delta_b Functies en mogelijke oorzaken: Waarom de auteur van de functie get_delta_b manier implementeert Prestatie-optimalisatie: ) en bitmask kunnen rechtstreeks U256-typen verwerken. Dit zal hoogstwaarschijnlijk de prestaties verbeteren en de rekenoverhead verminderen. In DeFi-toepassingen, met name in hoogfrequente handelsscenario's, zijn prestaties van cruciaal belang. De becommentarieerde code gebruikt u256::get ,u256::shrw Hoewel de huidige implementatie gebruikmaakt van bitbewerkingen (>> 64 Bespaar op gaskosten: Operaties op de Sui-blockchain moeten gaskosten betalen en complexere operaties zullen meer gas verbruiken. Het vereenvoudigen van wiskunde kan de transactiekosten verlagen, vooral voor vaak gebruikte AMM-kernfuncties. Verminderde afhankelijkheden: Modulefuncties, en de huidige implementatie vermindert aanroepen naar deze functies, misschien om de afhankelijkheid van externe bibliotheken te verminderen of om problemen met sommige externe functies te voorkomen. De code in de commentaren gebruikt meer u256 Solidity to Move porting: In termen van codestijl zou dit een porting kunnen zijn van Ethereum's Solidity-code naar Sui's Move-taal. Dit gebruik van bitmanipulatie en maskering is gebruikelijk in Solidity, vooral in AMM-implementaties zoals Uniswap V3. Omgaan met vaste-komma-wiskunde: Het resulterende 256-bits resultaat moet correct worden verwerkt, en 64 bits naar rechts verschuiven is een gebruikelijke manier om de juiste positie achter de komma te krijgen. Vaste-komma-wiskunde wordt vaak gebruikt in AMM's om met decimale waarden om te gaan. full_math_u128::full_mul Mogelijke problemen Deze implementatie brengt echter verschillende problemen met zich mee: Slechte leesbaarheid van de code: Het gebruik van hardgecodeerde maskers en verplaatsingsbewerkingen maakt de code moeilijk te begrijpen en te controleren. Gebrek aan volledige grenscontrole: Bitbewerkingen en typeconversiebewerkingen missen uitgebreide grenscontrole, wat in extreme gevallen tot onverwacht gedrag kan leiden. Code voor opmerkingen bestaat naast de implementatiecode: Het bewaren van oudere versies van de code met opmerkingen geeft aan dat de code zich mogelijk in een overgangsfase bevindt of niet voldoende is getest, wat gevaarlijk is voor kritieke code die te maken heeft met financiële activa. Risico op overloop van gehele getallen: Bij het omgaan met grote waarden kunnen bitbewerkingen en transformaties leiden tot overloop van gehele getallen, en vereenvoudigde implementaties missen mogelijk adequate beveiligingsmechanismen. samenvatting Het is waarschijnlijk dat de belangrijkste reden van de auteur voor het implementeren van deze code is om de prestaties te optimaliseren en de gaskosten te verlagen, terwijl hij wiskundige berekeningen met een vast punt in AMM's afhandelt. Deze optimalisatie, die ten koste gaat van de beveiliging en leesbaarheid van de code, kan aanvallers echter voorzien van misbruikbare kwetsbaarheden, zoals u kunt zien aan het Cetus-diefstalincident dat u hebt opgegeven. In DeFi-projecten moet beveiliging altijd voorrang hebben op prestatie-optimalisatie, vooral voor kernfuncties die omgaan met gebruikersactiva. Het is beter om beproefde bibliotheekfuncties te gebruiken, uitgebreide grenscontroles toe te voegen en adequate beveiligingsaudits uit te voeren.
Origineel weergeven
De inhoud op deze pagina wordt geleverd door derden. Tenzij anders vermeld, is OKX niet de auteur van het (de) geciteerde artikel(en) en claimt geen auteursrecht op de materialen. De inhoud is alleen bedoeld voor informatieve doeleinden en vertegenwoordigt niet de standpunten van OKX. Het is niet bedoeld als een goedkeuring van welke aard dan ook en mag niet worden beschouwd als beleggingsadvies of een uitnodiging tot het kopen of verkopen van digitale bezittingen. Voor zover generatieve AI wordt gebruikt om samenvattingen of andere informatie te verstrekken, kan deze door AI gegenereerde inhoud onnauwkeurig of inconsistent zijn. Lees het gelinkte artikel voor meer details en informatie. OKX is niet verantwoordelijk voor inhoud gehost op sites van een derde partij. Het bezitten van digitale activa, waaronder stablecoins en NFT's, brengt een hoge mate van risico met zich mee en de waarde van deze activa kan sterk fluctueren. Overweeg zorgvuldig of de handel in of het bezit van digitale activa geschikt voor je is in het licht van je financiële situatie.