Batasan
Batasan dan limit penting saat membangun di atas Rome EVM. Memahami batasan ini membantu Anda merancang kontrak yang bekerja dengan andal.
Batas Transaksi Solana
Ukuran transaksi
1.232 byte
Tx EVM besar dibagi ke beberapa akun holder (transparan)
Unit komputasi per tx
~1,4M CU
Operasi yang melebihi ini menggunakan mode iteratif
Akun per tx (tanpa ALT)
28
Gunakan Address Lookup Tables untuk lebih banyak
Akun per tx (dengan ALT)
64+
ALT digunakan otomatis saat > 28 akun
Ukuran holder maksimal
80 KB
Ukuran RLP maksimum untuk satu transaksi EVM
Batas Eksekusi EVM
Slot penyimpanan kontrak
256 per akun penyimpanan
Beberapa akun penyimpanan dapat dibuat per kontrak
Opcode per iterasi
~500
Untuk mode iteratif (VmIt)
TTL penguncian akun
3-4 detik
Selama eksekusi iteratif
Dompet treasury
64
Dompet pool biaya
Batas ukuran kontrak
480 KB
Dinaikkan dari 24 KB milik Ethereum (mode OP-Geth)
Batasan CPI
Kedalaman CPI
Maks. 4 level
Batas kedalaman CPI Solana
Akun per panggilan CPI
Dibatasi oleh ukuran tx Solana
Secara praktis ~20 akun per CPI
Kedalaman CPI + Transfer Hook
Menggunakan level CPI
Transfer hook dari dalam CPI dapat melebihi kedalaman
Kedalaman CPI adalah batasan yang paling kritis. Rome EVM mengonsumsi satu level CPI ketika Solana memanggil program Rome. Jika kontrak Solidity Anda kemudian memanggil program Solana lain melalui CPI, itu level 2. Jika program itu memanggil yang lain, itu level 3. Total maksimum hanya 4 level.
Batasan Token-2022 Transfer Hook
Satu hook per mint
Meta-Hook Router menyelesaikan ini (hingga 8 sub-hook)
transfer_checked saja
Hook tidak aktif pada transferbiasa. Jembatan Rome HARUS menggunakan transfer_checked
Mint/burn tidak di-hook
Dikendalikan melalui mint authority, bukan hook
Hanya mode state tunggal
OP-Geth tidak dapat dijangkau dari dalam tx Solana
Pelarian pembungkusan token
Pengguna dapat membungkus token untuk melewati hook. Diminimalkan melalui blacklist wrapper + PermanentDelegate
Batasan Gas dan Penetapan Harga
Sumber harga gas
Pool Meteora DAMM V1 (token gas SPL)
Pengali harga gas
Dapat dikonfigurasi per proxy (gas_price_mul)
Harga gas minimum
Ditetapkan oleh konfigurasi proxy
Estimasi gas
Dilakukan off-chain melalui emulator Mollusk sebelum pengiriman
Batasan Spesifik Jaringan
Lokal
1001
Ditetapkan di rome-setup config
Devnet (montispl)
200002
RD2Gg7Lcnv62XmRHAzxh6fQQfMRzHtN5LeKPVBhYU5S
Testnet (Martius)
121214
Periksa konfigurasi deployment
Testnet (Caelian)
121215
Periksa konfigurasi deployment
Batasan Precompile
Modexp (0x05)
Dinonaktifkan โ dapat diaktifkan melalui feature flag
BN254 ecPairing (0x08)
Biaya CU tinggi โ biasanya memerlukan mode iteratif (~200K CU)
CPI precompile (0xFF...08)
Akun harus dideklarasikan di awal dalam transaksi Solana
Batasan Oracle
Kedaluwarsa maksimum default
60 detik
Data round historis
Tidak didukung โ getRoundData(roundId) revert
Switchboard EMA
Tidak didukung โ latestEMAData() revert pada SwitchboardV3
Offset parser
Divalidasi secara empiris โ harus divalidasi ulang sebelum redeployment
Rekomendasi Desain
Jaga kedalaman CPI tetap dangkal. Rancang kontrak untuk meminimalkan nesting. Jika Anda memanggil Jupiter yang memanggil Raydium yang memanggil SPL Token, Anda berada di 3 level โ sangat dekat dengan batas.
Utamakan mode atomik. Rancang operasi agar muat dalam ~1,4M CU. Mode iteratif menambah latensi (penguncian 3-4 detik) dan kompleksitas.
Deklarasikan akun di awal. Semua akun Solana yang disentuh oleh CPI harus sudah diketahui saat transaksi dibuat. Penemuan akun secara dinamis di dalam panggilan CPI tidak dimungkinkan.
Gunakan
transfer_checked. Jika Anda membangun apa pun yang menyentuh token Token-2022, selalu gunakantransfer_checkeduntuk memastikan hook aktif.Uji konsumsi CU. Gunakan
eth_estimateGasselama pengembangan. Optimalkan dengan Yul untuk jalur panas. Lihat Optimasi CU.
Apa Selanjutnya
Anggaran Komputasi โ biaya CU terperinci per operasi
Interoperabilitas Token โ model bridging ERC-20 โ SPL
Panduan Optimasi CU โ teknik optimasi praktis
Terakhir diperbarui
Apakah ini membantu?