Saya melihat kode yang salah dengan Cetus tadi malam, dan hal pertama yang sangat saya curigai tentang get_delta_b adalah mengapa fungsi ini akan mengubah u256 menjadi u64, yang menyebabkan masalah intersepsi akurasi. Setelah bertanya kepada AI, kemungkinan ketika cetus memigrasikan semua rumus uniswap v3, karena uni menggunakan titik tetap, itu perlu dikonversi menjadi angka floating-point tanpa pertimbangan keamanan yang cermat. Logika bisnis semacam ini, yang termasuk dalam tingkat algoritma, sulit dideteksi dalam audit kode, kecuali lembaga audit juga memiliki peneliti yang akrab dengan algoritma dan kode. Inilah logika mengapa AI menganalisis kode seperti yang dilakukannya: Berdasarkan analisis saya tentang basis kode, sekarang saya dapat menjelaskan mengapa penulis memilih untuk menerapkannya dengan cara ini get_delta_b fungsi, dan kemungkinan penyebab: Mengapa penulis fungsi mengimplementasikan get_delta_b cara Pengoptimalan kinerja: ) dan bitmask secara langsung menangani jenis U256. Ini kemungkinan besar akan meningkatkan performa dan mengurangi overhead komputasi. Dalam aplikasi DeFi, terutama skenario perdagangan frekuensi tinggi, kinerja sangat penting. Kode yang dikomentari menggunakan u256::get ,u256::shrw sedangkan implementasi saat ini menggunakan operasi bit (>> 64 Hemat biaya gas: Operasi di blockchain Sui perlu membayar biaya gas, dan operasi yang lebih kompleks akan mengkonsumsi lebih banyak gas. Menyederhanakan matematika dapat mengurangi biaya transaksi, terutama untuk fungsi inti AMM yang sering dioperasikan. Dependensi yang dikurangi: Fungsi modul, dan implementasi saat ini mengurangi panggilan ke fungsi ini, mungkin untuk mengurangi dependensi pada pustaka eksternal, atau untuk menghindari masalah dengan beberapa fungsi eksternal. Kode di komentar menggunakan lebih banyak u256 Porting Solidity to Move: Dalam hal gaya kode, ini bisa berupa porting dari kode Solidity Ethereum ke bahasa Move Sui. Penggunaan manipulasi bit dan masking ini umum terjadi di Solidity, terutama dalam implementasi AMM seperti Uniswap V3. Berurusan dengan matematika titik tetap: Hasil 256-bit yang dihasilkan perlu diproses dengan benar, dan menggeser 64 bit ke kanan adalah cara umum untuk mendapatkan posisi titik desimal yang benar. Matematika titik tetap sering digunakan dalam AMM untuk menangani nilai desimal. full_math_u128::full_mul Potensi masalah Namun, implementasi ini menimbulkan beberapa masalah: Keterbacaan kode yang buruk: Penggunaan masker hardcode dan operasi perpindahan membuat kode sulit dipahami dan diaudit. Kurangnya pemeriksaan batas penuh: Operasi bit dan operasi konversi jenis tidak memiliki pemeriksaan batas yang komprehensif, yang dapat menyebabkan perilaku tak terduga dalam kasus ekstrem. Kode komentar hidup berdampingan dengan kode implementasi: Menyimpan versi kode yang dikomentari yang lebih lama menunjukkan bahwa kode mungkin dalam keadaan transisi atau tidak diuji secara memadai, yang berbahaya bagi kode penting yang berurusan dengan aset keuangan. Risiko luapan bilangan bulat: Saat berhadapan dengan nilai besar, operasi bit dan transformasi dapat menyebabkan luapan bilangan bulat, dan implementasi yang disederhanakan mungkin tidak memiliki mekanisme perlindungan yang memadai. ringkasan Kemungkinan alasan utama penulis menerapkan kode ini adalah untuk mengoptimalkan kinerja dan mengurangi biaya gas, sambil menangani perhitungan matematika titik tetap di AMM. Namun, pengoptimalan ini, dengan mengorbankan keamanan dan keterbacaan kode, dapat memberi penyerang kerentanan yang dapat dieksploitasi, seperti yang Anda lihat dari insiden pencurian Cetus yang Anda berikan. Dalam proyek DeFi, keamanan harus selalu diutamakan daripada pengoptimalan kinerja, terutama untuk fungsi inti yang menangani aset pengguna. Lebih baik menggunakan fungsi perpustakaan yang telah terbukti, menambahkan pemeriksaan batas yang komprehensif, dan melakukan audit keamanan yang memadai.
Tampilkan Versi Asli
26
47,98 rb
Konten pada halaman ini disediakan oleh pihak ketiga. Kecuali dinyatakan lain, OKX bukanlah penulis artikel yang dikutip dan tidak mengklaim hak cipta atas materi tersebut. Konten ini disediakan hanya untuk tujuan informasi dan tidak mewakili pandangan OKX. Konten ini tidak dimaksudkan sebagai dukungan dalam bentuk apa pun dan tidak dapat dianggap sebagai nasihat investasi atau ajakan untuk membeli atau menjual aset digital. Sejauh AI generatif digunakan untuk menyediakan ringkasan atau informasi lainnya, konten yang dihasilkan AI mungkin tidak akurat atau tidak konsisten. Silakan baca artikel yang terkait untuk informasi lebih lanjut. OKX tidak bertanggung jawab atas konten yang dihosting di situs pihak ketiga. Kepemilikan aset digital, termasuk stablecoin dan NFT, melibatkan risiko tinggi dan dapat berfluktuasi secara signifikan. Anda perlu mempertimbangkan dengan hati-hati apakah trading atau menyimpan aset digital sesuai untuk Anda dengan mempertimbangkan kondisi keuangan Anda.