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

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:

Methode
Zweck

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-Aufruf eth_estimateGas on-chain und erhält automatisch den richtigen Wert.

  • Hardcode nicht 21000 fü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 codierter 21000 Gas-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?