JSON-RPC-Unterstützung
Von Rome-EVM-Endpunkten unterstützte Ethereum-JSON-RPC-Methoden plus Rome-spezifisches Verhalten — für Foundry, Hardhat, ethers, viem und MetaMask.
Die Rome-EVM-Endpunkte sprechen standardmäßiges Ethereum-JSON-RPC. Foundry, Hardhat, ethers, viem und MetaMask funktionieren gegen Rome genauso wie bei jeder anderen EVM-Chain. Diese Seite listet auf, was unterstützt wird, und die wenigen Rome-spezifischen Verhaltensweisen, die man kennen sollte.
Unterstützte Methoden
Kern (Status & Ausführung): eth_chainId, eth_blockNumber, eth_getBalance, eth_getCode, eth_getStorageAt, eth_getTransactionCount, eth_call, eth_estimateGas, eth_gasPrice, eth_maxPriorityFeePerGas, eth_feeHistory.
Blöcke & Transaktionen: eth_getBlockByNumber, eth_getBlockByHash, eth_getBlockReceipts, eth_getTransactionByHash, eth_getTransactionReceipt, eth_sendRawTransaction, Block-by-Index/Count-Varianten.
Logs & Filter: eth_getLogs, eth_newFilter, eth_newBlockFilter, eth_getFilterChanges, eth_getFilterLogs, eth_uninstallFilter.
WebSocket-Abonnements: eth_subscribe / eth_unsubscribe (newHeads, logs). Siehe WebSocket-Abonnements.
Net / web3: net_version, net_listening, net_peerCount, web3_clientVersion.
Kleine Introspektionsmethoden: rpc_modules (listet debug, eth, net, rome, rpc, txpool, web3), eth_syncing (immer false), eth_accounts (immer eine leere Liste), eth_getUncleCountByBlockNumber, eth_getUncleCountByBlockHash, eth_getUncleByBlockNumberAndIndex und eth_getUncleByBlockHashAndIndex (keine Uncles, daher sind die Zähler 0x0 und Abfragen liefern null), eth_newPendingTransactionFilter (akzeptiert, gibt aber nie Hashes zurück, da es keinen öffentlichen Mempool gibt), und txpool_status, das immer zurückgibt {"pending":"0x0","queued":"0x0"} weil es keinen öffentlichen Mempool gibt.
Tracing: debug_traceRomeTransaction nimmt einen Transaktions-Hash entgegen und gibt die Aufschlüsselung pro Unteraufruf und pro CPI für eine Transaktion zurück, die mehrere Aufrufe in einem Batch bündelt. Normale Transaktionen geben null, ebenso wie ein Hash, der unbekannt ist oder noch nicht indexiert wurde.
Nicht unterstützt
debug_traceTransaction / trace_* (Ethereum-artiges Transaktions-Tracing; sie geben -32601), eth_getProof, eth_createAccessList, eth_blobBaseFee (keine Blob-Transaktionen), und die txpool_* Methoden außer txpool_status (kein öffentlicher Mempool). newPendingTransactions Abonnements werden akzeptiert, lösen aber nie Ereignisse aus.
Rome-Erweiterungsmethoden
Über standardmäßiges Ethereum-RPC hinaus stellt der Proxy rome_* Methoden bereit:
rome_emulateTx
Eine Transaktion off-chain emulieren (gibt das Solana-Ausführungsergebnis zurück)
rome_emulateTxWithPayer
Gegen einen bestimmten Zahler emulieren
rome_emulateCallAccounts
Emulieren und die Solana-Konten zurückgeben, die ein Aufruf berührt
rome_emulateRegRollup
Eine Rollup-Registrierung emulieren
rome_getResources
Den Zustand des Proxy-Ressourcenpools melden (Zahler, Halter)
rome_mintId
Die zugrunde liegende SPL-Mint hinter einem ERC-20-Wrapper auflösen
rome_buildInfo
Proxy-Build + On-Chain-Programm-Info
rome_isCompatible
Proxy/Programm-Kompatibilität prüfen
rome_solanaTxForEvmTx
Die Solana-Transaktion(en) für einen EVM-Transaktions-Hash abrufen
rome_sendUnsignedTransaction
Eine unsignierte Transaktion übermitteln (synthetische-Sender-Flows)
rome_composeUnsignedAtomicV1
Eine einzelne Solana-v1-Transaktion für einen unsignierten EIP-1559-Body erstellen, autorisiert durch die Ed25519-Signatur einer Solana-Wallet; die Wallet signiert sie und die App sendet sie. Lehnt ab, wenn der Aufruf nicht in eine atomare Transaktion passt
rome_composeUnsignedIterativeV1
Gleiches, gibt aber jedes Leg zurück (atomar, wenn es passt, sonst die iterativen Legs); die Wallet signiert jedes und sendet sie mit rome_submitSignedV1Plan
rome_submitSignedV1Plan
Einen signierten Plan übertragen (bis zu 64 Legs); der Proxy ist nur Transport, die Wallet bleibt Gebührenzahler
rome_relayUnsignedV1
Eine Wallet-Signatur, der Zahler des Proxys steuert die Legs; der synthetische Account zahlt Rome-Gas (zuerst aufladen mit rome_composeExternalDepositV1). Gibt den EVM-Transaktions-Hash zurück
rome_composeExternalDepositV1
Eine von der Wallet signierte Transaktion, die das native Gas-Guthaben des synthetischen Kontos aus den Tokens der Wallet gutschreibt
Rome-spezifische Verhaltensweisen
Gas ist von Solana abgeleitet — schätzen, nicht fest codieren
Rome misst die Ausführung in Solana-Compute-Einheiten, angezeigt als EVM-Gas. Praktische Folgen:
Lass dein Tooling Gas immer schätzen.
forge create,cast, und Hardhat-Aufrufeth_estimateGason-chain und erhält automatisch den richtigen Wert.Hardcode nicht
21000für native Überweisungen. Eine Überweisung an eine Adresse, die noch nicht existiert, kostet mehr als 21000 (sie erstellt das Empfängerkonto). Die Schätzung berücksichtigt dies; ein fest codierter21000Gas-Limit schlägt bei neuen Empfängern fehl.
forge script --broadcast benötigt --skip-simulation
forge script setzt sein Broadcast-Gas-Limit aus einer lokalen Simulation, die im Vergleich zu Roms Gasmodell zu wenig veranschlagt. Füge --skip-simulation hinzu, damit Foundry stattdessen das der Chain eth_estimateGas verwendet:
forge create, cast send, und Hardhat sind davon nicht betroffen — sie schätzen bereits on-chain.
eth_getLogs ist auf einen Bereich begrenzt (~12.000 Blöcke)
Wie Infura, Alchemy und andere Produktions-RPCs, eth_getLogs weist zu breite Blockbereiche zurück (Fehler -32005). Begrenze deine Abfragen:
Ein queryFilter ohne Bereich durchsucht den gesamten Verlauf und überschreitet das Limit — übergib ein explizites fromBlock/toBlock. Ereignisbasierten Assertions auf Basis von Receipts (z. B. auf eine Tx warten und ihre Logs lesen) sind davon nicht betroffen.
Gebühren
eth_gasPrice liefert den realen, aus dem Orakel abgeleiteten Preis; Wallets (einschließlich MetaMask) verwenden ihn und zeigen korrekte Gebühren an. Übermittelte Gebührenfelder werden großzügig akzeptiert — sowohl Legacy- als auch EIP-1559-Transaktionen landen mit den Standard-Defaults der üblichen Tools.
Zuletzt aktualisiert
War das hilfreich?