For the complete documentation index, see llms.txt. This page is also available as Markdown.

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

Kendala
Nilai
Dampak

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

Kendala
Nilai
Catatan

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

Kendala
Nilai
Catatan

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

Kendala
Dampak

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

Kendala
Catatan

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

Lingkungan
Chain ID
ID Program rome-evm

Lokal

1001

Stack pengembangan lokal

Hadrian (devnet)

200010

RPTWwELXAY4KC9ZPHhaxp7Sq1hHtU3HNEgLbSegCcWf

Martius (testnet)

121214

RomeTaTNPJNBxtB3Wong9geVTtkEFJfUqgktQVq3iSX

Kendala Precompile

Precompile
Kendala

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

Kendala
Nilai

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

  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 sesuai dalam ~1,4 juta 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 dinamis 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 terpicu.

  5. Uji konsumsi CU. Ukur unit komputasi Solana yang sebenarnya dari tanda terima transaksi (computeUnitsConsumed) — EVM gasUsed bukan proksi yang akurat untuk CU Solana. Optimalkan dengan Yul untuk jalur panas.

Langkah Selanjutnya

Terakhir diperbarui

Apakah ini membantu?