Ich habe mir gestern Abend den Code angesehen, der mit Cetus nicht stimmte, und das erste, woran ich get_delta_b sehr misstrauisch war, war, warum diese Funktion u256 in u64 konvertierte, was das Problem des Abfangens verursachte. Nachdem ich die KI gefragt habe, ist es wahrscheinlich, dass bei der Migration aller uniswap v3-Formeln durch cetus dieser ohne sorgfältige Sicherheitsüberlegung in eine Gleitkommazahl umgewandelt werden muss, da uni einen Festkomma verwendet. Diese Art von Geschäftslogik, die zur Algorithmenebene gehört, ist bei Code-Audits nur schwer zu erkennen, es sei denn, die Prüfinstitution verfügt auch über Forscher, die sich sowohl mit Algorithmen als auch mit Code auskennen. Hier ist die Logik, warum KI den Code so analysiert, wie sie es tut: Basierend auf meiner Analyse der Codebasis kann ich nun erklären, warum der Autor sich für diese Art der Implementierung entschieden hat get_delta_b Funktionen und mögliche Ursachen: Warum der Autor der Funktion get_delta_b Weise implementiert Performance-Optimierung: ) und Bitmask verarbeiten U256-Typen direkt. Dies wird höchstwahrscheinlich die Leistung verbessern und den Rechenaufwand reduzieren. Bei DeFi-Anwendungen, insbesondere bei Hochfrequenzhandelsszenarien, ist die Leistung von entscheidender Bedeutung. Der auskommentierte Code verwendet u256::get ,u256::shrw Während die aktuelle Implementierung Bit-Operationen verwendet (>> 64 Gasgebühren sparen: Für den Betrieb auf der Sui-Blockchain müssen Gasgebühren gezahlt werden, und komplexere Vorgänge verbrauchen mehr Gas. Die Vereinfachung der Mathematik kann die Transaktionskosten senken, insbesondere für häufig betriebene AMM-Kernfunktionen. Reduzierte Abhängigkeiten: Modulfunktionen, und die aktuelle Implementierung reduziert die Aufrufe dieser Funktionen, möglicherweise um die Abhängigkeiten von externen Bibliotheken zu verringern oder um Probleme mit einigen externen Funktionen zu vermeiden. Der Code in den Kommentaren verwendet mehr u256 Portierung von Solidity to Move: In Bezug auf den Codestil könnte dies eine Portierung von Ethereums Solidity-Code auf die Move-Sprache von Sui sein. Diese Verwendung von Bitmanipulation und -maskierung ist in Solidity üblich, insbesondere in AMM-Implementierungen wie Uniswap V3. Umgang mit Festkommamathematik: Das resultierende 256-Bit-Ergebnis muss korrekt verarbeitet werden, und das Verschieben von 64 Bit nach rechts ist eine gängige Methode, um die korrekte Dezimalpunktposition zu erhalten. Die Festkommarechnung wird häufig in AMMs verwendet, um mit Dezimalwerten umzugehen. full_math_u128::full_mul Mögliche Probleme Diese Implementierung führt jedoch zu mehreren Problemen: Schlechte Lesbarkeit des Codes: Die Verwendung von hartcodierten Masken und Verschiebungsvorgängen erschwert das Verständnis und die Prüfung des Codes. Fehlende Überprüfung der vollständigen Grenzen: Bei Bitoperationen und Typkonvertierungsoperationen fehlt eine umfassende Überprüfung der Grenzen, was in extremen Fällen zu unerwartetem Verhalten führen kann. Kommentieren von Code koexistiert mit Implementierungscode: Das Beibehalten älterer Versionen von kommentiertem Code deutet darauf hin, dass sich der Code möglicherweise in einem Übergangszustand befindet oder nicht ausreichend getestet wurde, was für kritischen Code, der sich mit finanziellen Vermögenswerten befasst, gefährlich ist. Risiko eines Ganzzahlüberlaufs: Beim Umgang mit großen Werten können Bitoperationen und Transformationen zu einem Ganzzahlüberlauf führen, und vereinfachten Implementierungen fehlen möglicherweise angemessene Schutzmechanismen. Zusammenfassung Es ist wahrscheinlich, dass der Hauptgrund des Autors für die Implementierung dieses Codes darin besteht, die Leistung zu optimieren und die Gaskosten zu senken, während gleichzeitig mathematische Festkommaberechnungen in AMMs verarbeitet werden. Diese Optimierung auf Kosten der Codesicherheit und -lesbarkeit kann Angreifern jedoch ausnutzbare Schwachstellen bieten, wie Sie an dem von Ihnen bereitgestellten Cetus-Diebstahlvorfall sehen können. Bei DeFi-Projekten sollte die Sicherheit immer Vorrang vor der Leistungsoptimierung haben, insbesondere bei den Kernfunktionen, die mit Benutzer-Assets umgehen. Es ist besser, bewährte Bibliotheksfunktionen zu verwenden, umfassende Bounds-Checks hinzuzufügen und angemessene Sicherheitsaudits durchzuführen.
Original anzeigen
26
61.211
Der Inhalt dieser Seite wird von Dritten bereitgestellt. Sofern nicht anders angegeben, ist OKX nicht der Autor der zitierten Artikel und erhebt keinen Anspruch auf das Urheberrecht an den Materialien. Der Inhalt wird ausschließlich zu Informationszwecken bereitgestellt und gibt nicht die Ansichten von OKX wieder. Er stellt keine wie auch immer geartete Befürwortung dar und sollte nicht als Anlageberatung oder Aufforderung zum Kauf oder Verkauf digitaler Vermögenswerte betrachtet werden. Soweit generative KI zur Bereitstellung von Zusammenfassungen oder anderen Informationen verwendet wird, können solche KI-generierten Inhalte ungenau oder inkonsistent sein. Bitte lesen Sie den verlinkten Artikel für weitere Details und Informationen. OKX ist nicht verantwortlich für Inhalte, die auf Websites Dritter gehostet werden. Der Besitz digitaler Vermögenswerte, einschließlich Stablecoins und NFTs, ist mit einem hohen Risiko verbunden und kann starken Schwankungen unterliegen. Sie sollten sorgfältig abwägen, ob der Handel mit oder der Besitz von digitalen Vermögenswerten angesichts Ihrer finanziellen Situation für Sie geeignet ist.