Kendala
Batasan saat membangun di Rome EVM — ukuran transaksi Solana, anggaran ~1,4 juta CU, batas akun, tata letak storage, dan cara Rome mengatasi masing-masing.
Batasan dan kendala penting saat membangun di atas Rome EVM. Memahami kendala 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,4 juta 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 maksimum holder
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
Adaptif
Dikemas sesuai anggaran CU tiap tx Solana (VmIt)
TTL penguncian akun
3-4 detik
Selama eksekusi iteratif
Dompet treasury
64
Dompet kumpulan biaya
Batas ukuran kontrak
24 KB
Sama seperti Ethereum (EIP-170, 24.576 byte)
Kendala CPI
Kedalaman CPI
Maksimal 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
Hook transfer dari dalam CPI dapat melebihi kedalaman
Kedalaman CPI adalah kendala yang paling kritis. Rome EVM menggunakan satu level CPI saat 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. Anda hanya memiliki total maksimal 4 level.
Kendala Transfer Hook Token-2022
Satu hook per mint
Mint Token-2022 memiliki satu slot transfer-hook
transfer_checked hanya
Hook tidak terpicu pada transfer biasa transfer. Operasi bridge Rome menggunakan transfer_checked
Mint/burn tidak di-hook
Dikendalikan melalui otoritas mint, bukan hook
Kendala Gas dan Penetapan Harga
Sumber harga gas
Pool Meteora DAMM, v1 atau v2 (token gas SPL)
Pengali harga gas
Dapat dikonfigurasi per proxy (gas_price_mul)
Harga gas minimum
Diatur oleh konfigurasi proxy
Estimasi gas
Dilakukan off-chain melalui emulator Mollusk sebelum pengiriman
Kendala Spesifik Jaringan
Lokal
1001
Stack pengembangan lokal
Hadrian (devnet)
200010
RPTWwELXAY4KC9ZPHhaxp7Sq1hHtU3HNEgLbSegCcWf
Martius (testnet)
121214
RomeTaTNPJNBxtB3Wong9geVTtkEFJfUqgktQVq3iSX
Kendala Precompile
Modexp (0x05)
Dinonaktifkan — dapat diaktifkan melalui feature flag
BN254 ecPairing (0x08)
Biaya CU tinggi — biasanya memerlukan mode iteratif (~200K CU)
Precompile CPI (0xFF...08)
Akun harus dideklarasikan di awal dalam transaksi Solana
Kendala Oracle
Maksimum kebaruan default
60 detik
Data round historis
Tidak didukung — getRoundData(roundId) revert
Switchboard EMA
Tidak didukung — latestEMAData() revert pada SwitchboardV3
Offset parser
Tervalidasi secara empiris — harus divalidasi ulang sebelum penerapan ulang
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 sesuai dalam ~1,4 juta 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 dinamis dalam panggilan CPI tidak dimungkinkan.
Gunakan
transfer_checked. Jika Anda membangun apa pun yang menyentuh token Token-2022, selalu gunakantransfer_checkeduntuk memastikan hook terpicu.Uji konsumsi CU. Ukur unit komputasi Solana yang sebenarnya dari tanda terima transaksi (
computeUnitsConsumed) — EVMgasUsedbukan proksi yang akurat untuk CU Solana. Optimalkan dengan Yul untuk jalur panas.
Langkah Selanjutnya
Anggaran Komputasi — biaya CU terperinci per operasi
Interoperabilitas Token — model bridging ERC-20 ↔ SPL
Terakhir diperbarui
Apakah ini membantu?