testnet
GitHub EN

eth_sendRawTransaction

eth_sendRawTransaction(signedTx) → txHash

서명된 트랜잭션을 네트워크에 브로드캐스트합니다. 트랜잭션을 로컬에서 서명한 뒤(예: ethers.js, viem 사용) 결과로 나오는 16진수 RLP 바이트를 전달합니다. 노드는 즉시 트랜잭션 해시를 반환하며, 블록에 포함될 때까지 대기하려면 eth_getTransactionReceipt를 사용하세요.

파라미터

이름 타입 필수 설명
signedTx string 16진수 인코딩된(0x 접두사 포함) 서명된 트랜잭션 데이터입니다. 발신자의 개인 키로 EIP-1559 또는 레거시 트랜잭션을 로컬에서 서명하여 생성합니다.

반환값

타입: string

트랜잭션 해시(32바이트, 16진수 인코딩)입니다. 트랜잭션은 멤풀에 있지만 아직 채굴되지 않았습니다.

에러

코드 이름 설명
-32000 Insufficient funds 발신자에게 value + gas만큼의 OKRW가 부족합니다
-32000 Nonce too low 트랜잭션의 nonce가 발신자의 현재 nonce보다 낮습니다. `eth_getTransactionCount`로 다시 가져와 재서명하세요.
-32602 Invalid signature 서명이 체인 ID와 일치하지 않습니다. chainId가 450815인지, 서명자가 EIP-155 리플레이 보호를 사용했는지 확인하세요.

예제

ethers.js v6 — 서명 및 브로드캐스트

ethers.js는 서명과 RPC 호출을 함께 처리합니다. 직접 제어가 필요하면 `wallet.signTransaction(req)`로 서명한 뒤 `provider.send("eth_sendRawTransaction", [signedHex])`를 호출하세요.

import { JsonRpcProvider, Wallet, parseEther } from "ethers";

const provider = new JsonRpcProvider("https://rpc-testnet.maroo.io");
const wallet = new Wallet(process.env.PRIVATE_KEY!, provider);

// `sendTransaction` signs locally and calls eth_sendRawTransaction internally.
const tx = await wallet.sendTransaction({
  to: "0xRecipientAddress",
  value: parseEther("1.5"), // 1.5 OKRW
});
console.log("Tx hash:", tx.hash);

const receipt = await tx.wait();
console.log("Mined in block:", receipt!.blockNumber);

사전 서명된 트랜잭션을 cURL로 전송

params의 16진수를 로컬에서 서명한 트랜잭션으로 교체하세요. 성공 시 `{ jsonrpc, id, result: "0x<txHash>" }`를 반환합니다.

curl -X POST https://rpc-testnet.maroo.io \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "eth_sendRawTransaction",
    "params": ["0xf86c80...signed-tx-hex..."],
    "id": 1
  }'
소스: maroo
ESC
검색어를 입력하세요