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

Batasan
Nilai
Dampak

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

Batasan
Nilai
Catatan

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

Batasan
Nilai
Catatan

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

Batasan
Dampak

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

Batasan
Catatan

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

Lingkungan
Chain ID
Program ID

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

Precompile
Batasan

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

Batasan
Nilai

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

  1. 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.

  2. Utamakan mode atomik. Rancang operasi agar muat dalam ~1,4M CU. Mode iteratif menambah latensi (penguncian 3-4 detik) dan kompleksitas.

  3. 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.

  4. Gunakan transfer_checked. Jika Anda membangun apa pun yang menyentuh token Token-2022, selalu gunakan transfer_checked untuk memastikan hook aktif.

  5. Uji konsumsi CU. Gunakan eth_estimateGas selama pengembangan. Optimalkan dengan Yul untuk jalur panas. Lihat Optimasi CUarrow-up-right.

Apa Selanjutnya

Terakhir diperbarui

Apakah ini membantu?