Arsitektur
Bagaimana komponen Rome saling terhubung — eksekusi EVM di dalam program Solana.
Rome menyematkan interpreter bytecode EVM di dalam program on-chain Solana. Pengguna berkomunikasi dengan Rome Proxy melalui Ethereum JSON-RPC standar, dan proxy mengirimkan transaksi mereka langsung ke program Rome EVM di Solana. Tidak ada lapisan eksekusi terpisah yang perlu disinkronkan — state EVM adalah state Solana.
Ikhtisar sistem
Komponen
Program Rome EVM (on-chain)
Inti Rome — program Solana BPF yang berisi interpreter bytecode EVM lengkap (fork dari SputnikVM). Program ini:
Menerima transaksi EVM yang diserialisasi sebagai instruksi Solana
Mengeksekusi bytecode Solidity di dalam runtime Solana
Memetakan setiap alamat Ethereum (H160) ke Solana PDA
Menyediakan precompile untuk memanggil Solana (CPI, System, Helper, Withdraw) di samping precompile Ethereum standar
Menyimpan state EVM (saldo, nonce, kode, storage) sebagai data akun Solana
Rome Proxy (server JSON-RPC)
Server JSON-RPC Ethereum standar pada port 9090 — titik masuk untuk chain publik. Server ini menerjemahkan panggilan API Ethereum menjadi aktivitas Solana:
eth_sendRawTransaction→ serialisasikan tx EVM → kirim instruksi Solanaeth_call→ emulasikan eksekusi off-chain melalui emulator Mollusk SVMeth_estimateGas→ simulasi untuk estimasi gaseth_getBalance,eth_getCode,eth_getBlockByNumber, receipt, log → disajikan dari state yang diindeks
Ini juga mengekspos ekstensi Rome: rome_emulateTx, rome_emulateRegRollup, rome_mintId, rome_buildInfo, rome_getResources, dan lainnya.
Hercules (pengindeks)
Mengawasi program Rome EVM di Solana dan merekonstruksi blok yang kompatibel dengan Ethereum — transaksi, receipt, log, dan perubahan state — didukung oleh PostgreSQL. Pada chain publik, ia berjalan dalam mode selaras slot, sehingga nomor blok dipetakan ke slot Solana dan slot yang sama menghasilkan blok yang sama pada pengindeks mana pun. Proxy menyajikan blok-blok ini ke dompet dan explorer.
Precompile
Rome menerapkan precompile Ethereum standar (ecrecover, SHA-256, RIPEMD-160, identity, modexp, operasi kurva BN254, blake2f) dengan semantik setara mainnet, serta precompile non-EVM yang menjangkau Solana: CpiProgram (0xFF…08, CPI arbitrer), System (0xFF…07, derivasi PDA dan helper base58), HelperProgram (0xFF…09, pembuatan ATA/PDA, transfer SPL, gas↔lamports), dan Withdraw (0x42…16). Lihat Contract Addresses referensi untuk tabel lengkap.
Mode eksekusi
Rome mengeksekusi transaksi EVM dengan salah satu dari dua cara:
Atomik (VmAt)
Satu transaksi Solana. Seluruh transaksi EVM dieksekusi dalam anggaran komputasi satu transaksi Solana (~1,4 juta unit komputasi). Digunakan untuk sebagian besar operasi — transfer, pemanggilan kontrak biasa, swap.
Iteratif (VmIt)
Untuk pekerjaan yang melebihi anggaran satu transaksi. Eksekusi dibagi ke beberapa transaksi Solana:
Setiap langkah (sebuah transaksi Solana) menjalankan sebanyak mungkin opcode EVM yang muat dalam anggaran komputasinya — ukuran langkah bersifat adaptif, bukan tetap
State VM diserialisasi dengan Borsh ke dalam sebuah
StateHolderakun di antara langkah-langkahAkun dikunci dengan TTL selama beberapa detik selama eksekusi
Digunakan untuk operasi berat seperti pairing BN254
Pemetaan akun
Setiap alamat Ethereum dipetakan secara deterministik ke Solana PDA yang diturunkan dari chain ID dan alamat di bawah program Rome EVM. PDA tersebut memiliki saldo akun (sebagai akun token SPL), kode kontrak, slot storage, dan nonce — semuanya sebagai data akun Solana.
Akun penampung
Transaksi Solana (v1) dibatasi hingga 4 KB, tetapi transaksi EVM (terutama deployment kontrak) bisa jauh lebih besar. Rome menyiapkan transaksi besar ke dalam akun penampung: transaksi dipecah menjadi potongan-potongan yang ditulis secara berurutan ke dalam penampung (hingga 80 KB), lalu dirakit dan dieksekusi on-chain. SDK Rome menangani ini secara transparan.
Gas dan penetapan harga
Setiap chain memiliki token gas sendiri — token SPL apa pun. Penetapan harga gas membaca pool Meteora DAMM (v1 atau v2, dapat dikonfigurasi) untuk mengonversi antara token gas dan SOL bagi biaya transaksi Solana yang mendasarinya.
Apa selanjutnya
Jaringan — terhubung ke Martius atau Hadrian
Mulai cepat — deploy kontrak pertama Anda
Model Eksekusi — eksekusi atomik vs iteratif secara mendalam
Terakhir diperbarui
Apakah ini membantu?