UNPKG

@tevm/actions

Version:

A typesafe library for writing forge scripts in typescript

39 lines (37 loc) 1.18 kB
import { InvalidParamsError } from '@tevm/errors' import { createTxFromRLP } from '@tevm/tx' import { bytesToHex, hexToBytes } from '@tevm/utils' /** * Request handler for eth_sendRawTransaction JSON-RPC requests. * @param {import('@tevm/node').TevmNode} client * @returns {import('./EthProcedure.js').EthSendRawTransactionJsonRpcProcedure} */ export const ethSendRawTransactionJsonRpcProcedure = (client) => { return async (request) => { const vm = await client.getVm() const [serializedTx] = request.params const txBuf = hexToBytes(serializedTx) // Use createTxFromRLP for all transaction types const tx = createTxFromRLP(txBuf, { common: vm.common.ethjsCommon }) if (!tx.isSigned()) { const err = new InvalidParamsError('Transaction must be signed!') return { method: request.method, jsonrpc: '2.0', ...(request.id ? { id: request.id } : {}), error: { code: err._tag, message: err.message, }, } } const txPool = await client.getTxPool() await txPool.add(tx, true) return { method: request.method, result: bytesToHex(tx.hash()), jsonrpc: '2.0', ...(request.id ? { id: request.id } : {}), } } }