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

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

User to Rome Proxy to the Rome EVM program on Solana, with Hercules indexing back

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 Solana

  • eth_call → emulasikan eksekusi off-chain melalui emulator Mollusk SVM

  • eth_estimateGas → simulasi untuk estimasi gas

  • eth_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:

  1. Setiap langkah (sebuah transaksi Solana) menjalankan sebanyak mungkin opcode EVM yang muat dalam anggaran komputasinya — ukuran langkah bersifat adaptif, bukan tetap

  2. State VM diserialisasi dengan Borsh ke dalam sebuah StateHolder akun di antara langkah-langkah

  3. Akun dikunci dengan TTL selama beberapa detik selama eksekusi

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

Terakhir diperbarui

Apakah ini membantu?