eth_sendRawTransaction on World Chain
Everything below was measured on 2026-10-13 by calling eth_sendRawTransaction on World Chain through the same endpoint customers use, and is re-measured weekly.
What eth_sendRawTransaction does
Submits a signed transaction to the network and returns its hash. The node checks the signature, chain ID, nonce and balance first, and returns an error string instead of a hash when any check fails, which is the text your app has to handle.
Errors World Chain returns, word for word
We submitted three transactions that must fail, signed by a new, empty key (nothing was spent). These are the messages your app receives in those situations.
| EIP-1559 transfer from an empty account | Temporary internal error. Please retry, trace-id: f5b7922b154b4a0861e551c68beede25 |
|---|---|
| Legacy transaction signed without a chain ID (pre-EIP-155) | Temporary internal error. Please retry, trace-id: 23bb374ec7367ea117e959a04ab65c99 |
| Truncated bytes ("0x02f8") | failed to decode signed transaction |
How to read them
World Chain's nodes refuse transactions without a chain ID ("Temporary internal error. Please retry, trace-id: 23bb374ec7367ea117e959a04ab65c99"), so old signing code that omits it fails here.
Send the same signed bytes again only if you never got a hash back: a second submission of an accepted transaction returns an "already known" style error, not a second transaction, and a transaction with the same nonce but a higher fee replaces it.
Example request
curl -s https://rpc.swiftnodes.io/rpc/worldchain?key=YOUR_API_KEY \
-X POST -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_sendRawTransaction","params":["0x02f8..."]}'import { createPublicClient, http } from "viem";
const client = createPublicClient({
transport: http("https://rpc.swiftnodes.io/rpc/worldchain?key=YOUR_API_KEY"),
});
try {
const hash = await client.sendRawTransaction({ serializedTransaction: signed });
const receipt = await client.waitForTransactionReceipt({ hash });
} catch (e) {
const msg = String(e?.details ?? e?.message);
if (/insufficient funds/i.test(msg)) { /* ask the user to top up */ }
else if (/nonce too low|already known/i.test(msg)) { /* already sent: look up by hash */ }
else throw e;
}Other methods on World Chain
- eth_blockNumberSupported
- eth_chainIdSupported
- eth_getBalanceSupported
- eth_getBlockByNumberSupported
- eth_getTransactionByHashNot available
- eth_getTransactionReceiptSupported
- eth_callSupported
- eth_estimateGasSupported
- eth_gasPriceSupported
- eth_maxPriorityFeePerGasSupported
- eth_getTransactionCountSupported
- eth_getCodeSupported
- eth_subscribeSupported
- eth_getLogsSupported
- eth_getBlockReceiptsSupported
- eth_feeHistorySupported
- eth_getProofSupported
- eth_createAccessListSupported
- debug_traceCallSupported
- trace_blockSupported
- trace_transactionNot available
eth_sendRawTransaction on other chains
- Ethereum
- Base
- Arbitrum
- Optimism
- Polygon
- BNB Smart Chain
- Avalanche
- Sonic
- Linea
- Scroll
- zkSync Era
- Blast
- Mantle
- Gnosis
- Celo
- Berachain
- Monad
- Unichain
- Kaia
- PulseChain
- Ronin
- Abstract
- ApeChain
- MegaETH
- Fantom
- Lisk
- Hemi
- X Layer
- BOB
- Plasma
- Fraxtal
- Zora
- Story
- Soneium
- Sei
- Hyperliquid
- Taiko
- Morph
- Ink
- Katana
- Ethereum Classic
- opBNB
- Mode
- Flare
- Core
- Chiliz
- Telos EVM
- Tempo
- Cronos
- Manta Pacific
- Shibarium
- Boba Network
- Arbitrum Nova
- Immutable zkEVM
Frequently asked questions
Does World Chain support eth_sendRawTransaction?
Yes. eth_sendRawTransaction answered on the SwiftNodes World Chain endpoint when our weekly probe called it through the customer path (2026-10-13).
Does World Chain accept transactions without a chain ID?
No. It answered "Temporary internal error. Please retry, trace-id: 23bb374ec7367ea117e959a04ab65c99".
World Chain endpoints, live block height and WebSocket status are on the World Chain RPC page.
One key covers every chain we serve, and SwiftNodes has a free tier.