Dukungan JSON-RPC
Metode Ethereum JSON-RPC yang didukung oleh endpoint Rome EVM, plus perilaku khusus Rome — untuk Foundry, Hardhat, ethers, viem, dan MetaMask.
Endpoint EVM Rome menggunakan JSON-RPC Ethereum standar. Foundry, Hardhat, ethers, viem, dan MetaMask bekerja terhadap Rome dengan cara yang sama seperti di chain EVM mana pun. Halaman ini mencantumkan apa yang didukung dan beberapa perilaku khusus Rome yang perlu diketahui.
Metode yang didukung
Inti (state & eksekusi): eth_chainId, eth_blockNumber, eth_getBalance, eth_getCode, eth_getStorageAt, eth_getTransactionCount, eth_call, eth_estimateGas, eth_gasPrice, eth_maxPriorityFeePerGas, eth_feeHistory.
Blok & transaksi: eth_getBlockByNumber, eth_getBlockByHash, eth_getBlockReceipts, eth_getTransactionByHash, eth_getTransactionReceipt, eth_sendRawTransaction, varian berdasarkan indeks/jumlah blok.
Log & filter: eth_getLogs, eth_newFilter, eth_newBlockFilter, eth_getFilterChanges, eth_getFilterLogs, eth_uninstallFilter.
Langganan WebSocket: eth_subscribe / eth_unsubscribe (newHeads, logs). Lihat Langganan WebSocket.
Net / web3: net_version, net_listening, net_peerCount, web3_clientVersion.
Metode introspeksi kecil: rpc_modules (mencantumkan debug, eth, net, rome, rpc, txpool, web3), eth_syncing (selalu false), eth_accounts (selalu berupa daftar kosong), eth_getUncleCountByBlockNumber, eth_getUncleCountByBlockHash, eth_getUncleByBlockNumberAndIndex dan eth_getUncleByBlockHashAndIndex (tidak ada uncle, jadi hitungannya adalah 0x0 dan pencarian mengembalikan null), eth_newPendingTransactionFilter (diterima, tetapi tidak pernah mengembalikan hash karena tidak ada mempool publik), dan txpool_status, yang selalu mengembalikan {"pending":"0x0","queued":"0x0"} karena tidak ada mempool publik.
Tracing: debug_traceRomeTransaction mengambil hash transaksi dan mengembalikan rincian per-sub-call dan per-CPI untuk transaksi yang menggabungkan beberapa panggilan menjadi satu batch. Transaksi biasa mengembalikan null, begitu pula hash yang belum dikenal atau belum diindeks.
Tidak didukung
debug_traceTransaction / trace_* (pelacakan transaksi bergaya Ethereum; mereka mengembalikan -32601), eth_getProof, eth_createAccessList, eth_blobBaseFee (tidak ada transaksi blob), dan metode txpool_* selain txpool_status (tidak ada mempool publik). newPendingTransactions langganan diterima tetapi tidak pernah memancarkan apa pun.
Metode ekstensi Rome
Selain RPC Ethereum standar, proxy mengekspos rome_* metode:
rome_emulateTx
Emulasikan transaksi di luar rantai (mengembalikan hasil eksekusi Solana)
rome_emulateTxWithPayer
Emulasikan terhadap payer tertentu
rome_emulateCallAccounts
Emulasikan dan kembalikan akun Solana yang disentuh suatu panggilan
rome_emulateRegRollup
Emulasikan pendaftaran rollup
rome_getResources
Laporkan status pool sumber daya proxy (payer, pemegang)
rome_mintId
Resolusikan SPL mint di balik pembungkus ERC-20
rome_buildInfo
Info build proxy + program on-chain
rome_isCompatible
Periksa kompatibilitas proxy/program
rome_solanaTxForEvmTx
Dapatkan transaksi Solana untuk hash tx EVM
rome_sendUnsignedTransaction
Kirim transaksi tanpa tanda tangan (alur synthetic-sender)
rome_composeUnsignedAtomicV1
Susun satu transaksi Solana v1 untuk body EIP-1559 tanpa tanda tangan yang diotorisasi oleh tanda tangan Ed25519 dari dompet Solana; dompet menandatanganinya dan aplikasi menyiarkannya. Menolak ketika panggilan tidak muat dalam satu transaksi atomik
rome_composeUnsignedIterativeV1
Sama, tetapi mengembalikan setiap leg (atomik jika muat, jika tidak leg iteratif); dompet menandatangani masing-masing dan mengirimkannya dengan rome_submitSignedV1Plan
rome_submitSignedV1Plan
Siarkan rencana yang ditandatangani (hingga 64 leg); proxy hanya sebagai transport, dompet tetap menjadi fee payer
rome_relayUnsignedV1
Satu tanda tangan dompet, payer proxy yang menjalankan leg; synthetic membayar gas Rome (danai dulu dengan rome_composeExternalDepositV1). Mengembalikan hash tx EVM
rome_composeExternalDepositV1
Satu transaksi yang ditandatangani dompet yang mengkredit saldo gas native synthetic dari token dompet
Perilaku khusus Rome
Gas diturunkan dari Solana — estimasikan, jangan hardcode
Rome mengukur eksekusi dalam unit komputasi Solana, yang ditampilkan sebagai gas EVM. Konsekuensi praktis:
Selalu biarkan alat Anda mengestimasi gas.
forge create,cast, dan Hardhat memanggileth_estimateGasdi on-chain dan mendapatkan nilai yang tepat secara otomatis.Jangan hardcode
21000untuk transfer native. Transfer ke alamat yang belum ada biayanya lebih dari 21000 (ia membuat akun penerima). Estimasi menangani ini; gas limit yang dihardcode akan gagal untuk penerima baru.21000gas limit akan gagal untuk penerima baru.
forge script --broadcast memerlukan --skip-simulation
forge script menetapkan batas gas broadcast-nya dari simulasi lokal, yang memberi alokasi terlalu sedikit terhadap model gas Rome. Tambahkan --skip-simulation agar Foundry menggunakan eth_estimateGas sebagai gantinya:
forge create, cast send, dan Hardhat tidak terpengaruh — mereka sudah mengestimasi di on-chain.
eth_getLogs dibatasi rentang-nya (~12.000 blok)
Seperti Infura, Alchemy, dan RPC produksi lainnya, eth_getLogs menolak rentang blok yang terlalu lebar (kesalahan -32005). Batasi kueri Anda:
Sebuah queryFilter tanpa rentang akan memindai seluruh riwayat dan akan melampaui batas — berikan fromBlock/toBlockyang eksplisit. Penegasan event berbasis receipt (misalnya menunggu tx dan membaca log-nya) tidak terpengaruh.
Biaya
eth_gasPrice mengembalikan harga nyata yang berasal dari oracle; dompet (termasuk MetaMask) menggunakannya dan menampilkan biaya yang benar. Field biaya yang dikirim diterima secara longgar — baik transaksi legacy maupun EIP-1559 mendarat dengan default alat standar.
Terakhir diperbarui
Apakah ini membantu?