Submit a payment, swap, or contract call that you signed in your wallet, signer service, or
application. GraphOps RPC broadcasts the signed payload with eth_sendRawTransaction and does not
custody private keys. You store the returned hash, poll for the receipt, and decide when the
transaction is final enough to report success.
Prerequisites
- An RPC API key.
- Ethereum mainnet endpoint access.
- A locally signed transaction for the same chain ID as the endpoint.
- Application-side nonce, gas, and fee handling.
Prepare the transaction
Before signing, check the chain and plan fees against the same endpoint you will submit to:
- Call
eth_chainIdand confirm it matches the chain ID in the transaction. This prevents a wrong-chain submission. - Estimate gas with
eth_estimateGas, and set fees frometh_feeHistoryandeth_maxPriorityFeePerGas. - Sign the transaction locally and keep the signed bytes until the receipt confirms it.
Request
Replace 0x<SIGNED_TRANSACTION> with your signed bytes. The recording comes from a disposable local
chain.
Prerequisites
Set GRAPHOPS_API_KEY to your GraphOps API key.
Replace <SIGNED_TRANSACTION> with your signed, hex-encoded transaction.
curl
curl --fail-with-body --silent --show-error "https://rpc.graphops.xyz/v1/evm/1" \
-H "Authorization: Bearer ${GRAPHOPS_API_KEY}" \
-H "Content-Type: application/json" \
--data '{
"jsonrpc": "2.0",
"id": 1,
"method": "eth_sendRawTransaction",
"params": ["0x<SIGNED_TRANSACTION>"]
}'
Output
{ "jsonrpc": "2.0", "id": 1, "result": "0x536129e5bd563374f67d3131b7edb31cd9b95eaa89526b23f3de05ca11592dc5"Transaction hash returned by the submitted operation}Store the hash
The hash identifies the transaction before it is included in a block. Store it before you report progress to your application, so a crash or timeout can resume from the hash instead of signing again.
Wait for the receipt
Poll eth_getTransactionReceipt with the stored hash. It returns null until the transaction is
included in a block:
Prerequisites
Set GRAPHOPS_API_KEY to your GraphOps API key.
Replace <TRANSACTION_HASH> with the transaction hash returned when you sent it.
curl
curl --fail-with-body --silent --show-error "https://rpc.graphops.xyz/v1/evm/1" \
-H "Authorization: Bearer ${GRAPHOPS_API_KEY}" \
-H "Content-Type: application/json" \
--data '{
"jsonrpc": "2.0",
"id": 1,
"method": "eth_getTransactionReceipt",
"params": ["0x<TRANSACTION_HASH>"]
}'
Output
{ "jsonrpc": "2.0", "id": 1, "result": { "type": "0x0", "status": "0x1",0x1 succeeded; 0x0 reverted but still paid gas "cumulativeGasUsed": "0x5208", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "transactionHash": "0x536129e5bd563374f67d3131b7edb31cd9b95eaa89526b23f3de05ca11592dc5",The hash you stored "transactionIndex": "0x0", "blockHash": "0x48ba51e86cbc56519a4303a92eaa607a985abddfe40a0171b8c7b37e0e5a8459",Recheck this if the block reorganizes "blockNumber": "0x1",The block that included it "gasUsed": "0x5208", "effectiveGasPrice": "0x3b9aca00",Gas cost is gasUsed times this "blobGasPrice": "0x1", "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "to": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", "contractAddress": null }}A receipt shows inclusion, not finality. For payments, settlement, or other irreversible steps,
wait until the receipt's block is at or behind the safe or finalized block your workflow
requires. If the block is reorganized, the transaction can return to the pending pool or be
included in a different block, so check the receipt again before acting on it.
Retry guidance
Retrying the exact same signed transaction is usually safe because the transaction hash is deterministic. Do not mutate gas, nonce, or value and retry blindly.
| Message | Meaning | Action |
|---|---|---|
already known | A node already has the transaction. | Track the transaction hash and poll for a receipt. |
nonce too low | The nonce has already been used. | Check whether the transaction was mined or replaced. |
replacement transaction underpriced | A replacement transaction did not pay enough. | Reprice according to wallet policy. |
insufficient funds | Sender cannot cover value plus gas. | Surface the error to the funding workflow. |