Dün gece Cetus'ta yanlış olan koda baktım ve get_delta_b hakkında çok şüphelendiğim ilk şey, bu işlevin neden u256'yı u64'e dönüştürdüğüydü, bu da doğruluk yakalama sorununa neden oldu. Yapay zekaya sorduktan sonra, cetus tüm uniswap v3 formüllerini taşıdığında, uni sabit bir nokta kullandığından, dikkatli bir güvenlik değerlendirmesi yapılmadan kayan noktalı bir sayıya dönüştürülmesi gerekebilir. Algoritma seviyesine ait olan bu tür bir iş mantığının, denetim kurumunun hem algoritmalara hem de kodlara aşina olan araştırmacılara sahip olmadığı sürece, kod denetimlerinde tespit edilmesi zordur. Yapay zekanın kodu neden bu şekilde analiz ettiğinin mantığı şu şekildedir: Kod tabanı analizime dayanarak, artık yazarın neden bu şekilde uygulamayı seçtiğini açıklayabilirim get_delta_b işlevler ve olası nedenler: İşlevin yazarı neden get_delta_b şekilde uygular? Performans optimizasyonu: ) ve bit maskesi doğrudan U256 türlerini işler. Bu, büyük olasılıkla performansı artıracak ve hesaplama yükünü azaltacaktır. DeFi uygulamalarında, özellikle yüksek frekanslı alım satım senaryolarında performans kritik öneme sahiptir. Açıklama satırı haline getirilen kod u256::get kullanır ,u256::shrw Mevcut uygulama bit işlemlerini kullanırken (>> 64 Gaz ücretlerinden tasarruf edin: Sui blok zincirindeki işlemlerin gaz ücreti ödemesi gerekir ve daha karmaşık işlemler daha fazla gaz tüketir. Matematiği basitleştirmek, özellikle sık çalıştırılan AMM temel işlevleri için işlem maliyetlerini azaltabilir. Azaltılmış bağımlılıklar: Modül işlevleri ve mevcut uygulama, belki de dış kitaplıklara bağımlılıkları azaltmak veya bazı dış işlevlerle ilgili sorunları önlemek için bu işlevlere yapılan çağrıları azaltır. Yorumlardaki kod daha fazla u256 kullanıyor Solidity to Move taşıma: Kod stili açısından bu, Ethereum'un Solidity kodundan Sui'nin Move diline bir taşıma olabilir. Bu bit manipülasyonu ve maskeleme kullanımı, Solidity'de, özellikle Uniswap V3 gibi AMM uygulamalarında yaygındır. Sabit nokta matematiğiyle uğraşmak: Elde edilen 256 bitlik sonucun doğru şekilde işlenmesi gerekir ve 64 biti sağa kaydırmak, doğru ondalık nokta konumunu elde etmenin yaygın bir yoludur. Sabit nokta matematiği genellikle AMM'lerde ondalık değerlerle başa çıkmak için kullanılır. full_math_u128::full_mul Potansiyel sorunlar Ancak, bu uygulama birkaç sorun ortaya çıkarır: Zayıf kod okunabilirliği: Sabit kodlanmış maskelerin ve yer değiştirme işlemlerinin kullanılması, kodun anlaşılmasını ve denetlenmesini zorlaştırır. Tam sınır denetiminin olmaması: Bit işlemleri ve tür dönüştürme işlemleri, aşırı durumlarda beklenmeyen davranışlara yol açabilecek kapsamlı sınır denetiminden yoksundur. Açıklama kodu, uygulama koduyla bir arada bulunur: Açıklama satırı yapılan kodun eski sürümlerini tutmak, kodun geçiş durumunda olabileceğini veya yeterince test edilmemiş olabileceğini gösterir ve bu da finansal varlıklarla ilgilenen kritik kod için tehlikelidir. Tamsayı taşması riski: Büyük değerlerle uğraşırken, bit işlemleri ve dönüştürmeleri tamsayı taşmasına neden olabilir ve basitleştirilmiş uygulamalar yeterli koruma mekanizmalarına sahip olmayabilir. özet Yazarın bu kodu uygulamasının ana nedeninin, AMM'lerde sabit noktalı matematik hesaplamalarını yaparken performansı optimize etmek ve gaz maliyetlerini azaltmak olması muhtemeldir. Ancak bu optimizasyon, kod güvenliği ve okunabilirliği pahasına, sağladığınız Cetus hırsızlık olayından da görebileceğiniz gibi saldırganlara istismar edilebilir zafiyetler sağlayabilir. DeFi projelerinde, özellikle kullanıcı varlıklarını işleyen temel işlevler için güvenlik her zaman performans optimizasyonundan önce gelmelidir. Kanıtlanmış kitaplık işlevlerini kullanmak, kapsamlı sınır kontrolleri eklemek ve yeterli güvenlik denetimleri yapmak daha iyidir.
Orijinal Dilde Göster
61,62 B
26
Bu sayfadaki içerik üçüncü taraflarca sağlanmaktadır. Aksi belirtilmediği sürece, atıfta bulunulan makaleler OKX TR tarafından kaleme alınmamıştır ve OKX TR, bu materyaller üzerinde herhangi bir telif hakkı talebinde bulunmaz. İçerik, yalnızca bilgilendirme amaçlı sağlanmıştır ve OKX TR’nin görüşlerini yansıtmaz. Ayrıca, sunulan içerikler herhangi bir konuya ilişkin onay niteliği taşımaz ve yatırım tavsiyesi veya herhangi bir dijital varlığın alınıp satılmasına yönelik davet olarak değerlendirilmemelidir. Özetler ya da diğer bilgileri sağlamak için üretken yapay zekânın kullanıldığı durumlarda, bu tür yapay zekâ tarafından oluşturulan içerik yanlış veya tutarsız olabilir. Daha fazla ayrıntı ve bilgi için lütfen bağlantıda sunulan makaleyi okuyun. OKX TR, üçüncü taraf sitelerde barındırılan içeriklerden sorumlu değildir. Sabit coinler ve NFT’ler dâhil olmak üzere dijital varlıkları tutmak, yüksek derecede risk içerir ve bu tür varlık fiyatlarında büyük ölçüde dalgalanma yaşanabilir. Dijital varlıkları alıp satmanın veya tutmanın sizin için uygun olup olmadığını finansal durumunuz ışığında dikkatlice değerlendirmelisiniz.