Comenzando con TheRPC
Referencia de API
API de Ethereum
Core API
Guías
Ethereum/Core API/eth_sendRawTransaction

eth_sendRawTransaction

El método eth_sendRawTransaction transmite una transacción pre-firmada a la red Ethereum. Este método se utiliza para enviar todo tipo de transacciones después de que han sido firmadas offline, convirtiéndolo en el método principal para cualquier operación que cambie el estado en la blockchain.

Casos de Uso

  • Envío de transferencias de ETH a otras direcciones y billeteras
  • Transferencias de tokens (ERC-20, ERC-721, ERC-1155) en aplicaciones
  • Despliegues de contratos inteligentes para desarrolladores
  • Llamadas a funciones de contrato y cambios de estado en dApps
  • Transacciones automatizadas a través de scripts o bots
  • Interacciones con billeteras multifirma que requieren firma offline
  • Meta-transacciones (transacciones sin gas) para mejor UX
  • Operaciones DeFi (swaps, provisión de liquidez, staking)
  • Votación de gobernanza a través de interacciones con contratos
  • Operaciones de acuñación de NFT en mercados

Detalles del Método

Este método envía una transacción firmada a la red para su procesamiento.

Parámetros:

Los datos de la transacción firmada (cadena hexadecimal)

Devuelve:

El hash de la transacción, o el hash cero si la transacción aún no está disponible

Proceso de Firma de Transacción

Antes de usar eth_sendRawTransaction, necesita:

  1. Crear una transacción sin firmar (con nonce, parámetros de gas, destinatario, valor, datos)
  2. Firmar la transacción con una clave privada
  3. Serializar y codificar en hexadecimal la transacción firmada
  4. Enviar la cadena hexadecimal a este método

Entendiendo los Tipos de Transacción

Ethereum soporta diferentes tipos de transacciones:

TipoDescripciónEstructura
Legacy (Tipo 0)Transacciones pre-EIP-1559 con gasPrice{nonce, gasPrice, gasLimit, to, value, data, v, r, s}
EIP-2930 (Tipo 1)Transacciones con listas de acceso{chainId, nonce, gasPrice, gasLimit, to, value, data, accessList, v, r, s}
EIP-1559 (Tipo 2)Transacciones con tarifa prioritaria{chainId, nonce, maxPriorityFeePerGas, maxFeePerGas, gasLimit, to, value, data, accessList, v, r, s}

Ejemplo de Respuesta

{
	"jsonrpc": "2.0",
	"id": 1,
	"result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"
}

Ejemplo de Respuesta de Error

{
	"jsonrpc": "2.0",
	"id": 1,
	"error": {
		"code": 3,
		"message": "execution reverted: Dai/insufficient-balance",
		"data": "0x08c379a00000000000000000000000000000000000000000000000000000000000000..."
	}
}

Errores Comunes y Solución de Problemas

ErrorDescripciónSolución
Nonce demasiado bajoEl nonce de la transacción ya ha sido utilizadoObtener el último nonce con eth_getTransactionCount
Nonce demasiado altoEl nonce de la transacción es más alto de lo esperadoUsar el nonce secuencial correcto
Fondos insuficientesNo hay suficiente ETH para gas + valorAñadir más ETH a la dirección remitente
Precio de gas demasiado bajoPrecio de gas ofrecido por debajo del mínimoAumentar el precio del gas o usar parámetros EIP-1559
Reemplazo infravaloradoAl reemplazar una tx, el nuevo precio de gas es demasiado bajoAumentar el precio del gas al menos un 10%
Ya conocidoTransacción ya en el mempoolEsperar a la transacción existente
Ejecución revertidaLa ejecución del contrato fallóVerificar condiciones del contrato y parámetros

Monitoreo del Estado de la Transacción

Después de transmitir una transacción:

  1. Almacenar el hash de transacción devuelto
  2. Consultar eth_getTransactionReceipt hasta que devuelva un resultado no nulo
  3. Verificar el campo status en el recibo:
    • 0x1 indica éxito
    • 0x0 indica fallo (revertido)

Estimación y Optimización de Gas

Antes de enviar transacciones, puede:

  1. Usar eth_estimateGas para obtener el gas aproximado necesario
  2. Para transacciones EIP-1559, verificar las condiciones actuales de la red con eth_feeHistory
  3. Para transacciones sensibles al tiempo, establecer tarifas prioritarias más altas
  4. Para transacciones no urgentes, establecer tarifas más bajas para ahorrar costos

Notas Importantes

  • Las transacciones deben ser firmadas con la clave privada del remitente antes del envío
  • El endpoint RPC nunca tiene acceso a sus claves privadas
  • Use eth_getTransactionReceipt para verificar el estado después del envío
  • Para la creación de contratos, el recibo contiene la nueva dirección del contrato en el campo contractAddress
  • Las cadenas hexadecimales deben estar correctamente formateadas con longitud par y prefijo '0x'
  • Considere usar carteras de hardware o gestión segura de claves para transacciones de alto valor
  • La gestión de nonce es crítica para la secuenciación adecuada de transacciones
  • El reemplazo de transacciones requiere un precio de gas más alto que el original
  • Las tarifas de transacción no son reembolsables incluso si la transacción falla
  • Las transacciones EIP-1559 pueden ser más rentables durante períodos de tarifas volátiles

Ver también

¡Ayúdanos a Mejorar!
Comparte esta página y ayúdanos a crear un producto aún mejor para ti.