5 minutos de lectura
Resumen
Las transacciones en Ethereum son mensajes de datos firmados criptográficamente que contienen un conjunto de instrucciones. Estas instrucciones pueden consistir en enviar Ether de una cuenta de Ethereum a otra o en interactuar con un contrato inteligente desplegado en la cadena de bloques. Las transacciones son un concepto sencillo pero potente que ha permitido a usuarios de todo el mundo interactuar en una red descentralizada. Esta guía abordará el concepto de las transacciones en el contexto de la red Ethereum.
Temas que trataremos
- Aspectos fundamentales de las transacciones
- Arquitectura de transacciones
- Visualización de datos de transacciones mediante programación
Lo que necesitarás
- Ventana de la terminal
Fundamentos de las transacciones
Una transacción suele constar de los siguientes parámetros: [nonce, gasPrice, gasLimit, to, value, data, v, r, s]. Sin embargo, Ethereum ha evolucionado para permitir otros estándares de transacción, como el EIP-1559. El estándar de transacción EIP-1559 surgió de una propuesta de mejora destinada a permitir unas comisiones de gas más predecibles y un mercado de transacciones más eficiente. Antes de profundizar en las transacciones, recapitulemos brevemente cuál es su origen.
Cuentas
Hay dos tipos de cuentas: las cuentas de contratos inteligentes y las cuentas de propiedad externa (EOA):
-
Las cuentas de propiedad externa (EOA) son aquellas gestionadas por personas, como una cartera personal de Metamask o Coinbase. Estas cuentas se identifican mediante una clave pública (también conocida como dirección de cuenta) y se controlan mediante una clave privada. La clave pública se deriva de la clave privada mediante un algoritmo criptográfico. Es importante señalar que estas cuentas no pueden almacenar otra información que no sea el saldo de la cuenta y el nonce.
-
Las cuentas de contratos inteligentes (también conocidas como cuentas de contrato) también contienen una correspondencia entre la dirección y el saldo, pero se diferencian en que además pueden incluir código EVM y almacenamiento. Las cuentas de contrato se gestionan a sí mismas mediante la lógica del código EVM almacenado en la cuenta.
Ethereum utiliza el algoritmo de firma digital de curva elíptica (ECDSA) para demostrar la autenticación (es decir, demostrar que disponemos de una clave privada para nuestra dirección pública) y verificar que nuestra transacción procede de la cuenta que la firma y que no es fraudulenta.
Tipos de transacciones
Vamos a relacionar la información que acabamos de aprender sobre las cuentas con los diferentes tipos de operaciones:
- Transacción de llamada de mensaje: Una llamada de mensaje se origina en una cuenta de propiedad externa (EOA) que desea interactuar con otra EOA o con una cuenta de contrato. Un ejemplo de llamada de mensaje sería enviar Ether de una cuenta a otra, o interactuar con un contrato inteligente (por ejemplo, intercambiar tokens en Uniswap).
- Transacción de creación de contrato: Una creación de contrato es una operación realizada desde una cuenta EOA para crear una cuenta de contrato inteligente (normalmente para almacenar código y datos). Un ejemplo de este tipo de transacción sería el despliegue de un contrato inteligente de almacenamiento para guardar datos.
Estados de las transacciones
- Pendiente: Transacciones transmitidas a la red que están a la espera de ser minadas. Si la transacción tarda más de lo esperado, es posible que tu tarifa de gas no sea lo suficientemente alta como para garantizar su ejecución en este momento.
- En cola: Una transacción que aún no se puede minar debido a que hay otra transacción pendiente en la cola que tiene prioridad o a que el nonce no sigue la secuencia correcta.
- Cancelado: Ya no se puede minar. Se sustituye por una transacción con una tarifa de gas más alta, el mismo valor de nonce y un valor nulo en el campo «data» y/o «value».
- Sustituida: Ya no se puede minar. Se utiliza para sustituir las órdenes pendientes actuales con el fin de acelerar su ejecución o modificar valores y datos. Para ello, es necesario utilizar el mismo nonce que la transacción que se desea cancelar y una tarifa de gas más elevada.
- Fallida: una transacción que ha dado lugar a un error debido a un error de reversión, instrucciones incorrectas, código ilógico o falta de gas para ejecutar el resto de una llamada a una función.
Para obtener información detallada sobre las transacciones pendientes y en cola, consulta nuestra guía de Quicknode aquí.
Arquitectura de transacciones
El formato de transacción de Ethereum era inicialmente único, pero ha ido evolucionando con el tiempo para admitir otros formatos de transacción. El conjunto de instrucciones de un objeto de transacción tiene el siguiente aspecto:
de- la dirección del remitente.a– la dirección de destino (si se trata de una EOA, la transacción transferirá valor; si se trata de una cuenta de contrato inteligente, la transacción utilizará el código del contrato).valor– la cantidad de ETH que se va a enviar desde la dirección de origen (expresada en Wei)datos– puede contener código o un mensaje para el destinatario.gasLimit– la cantidad máxima de unidades de gas que se pueden utilizar.nonce- un número que se utiliza para controlar el orden de las transacciones y evitar los ataques de repeticiónmaxPriorityFeePerGas- la cantidad máxima de gas que se puede incluir como propina para el minero.maxFeePerGas- la cantidad máxima de gas que se está dispuesto a pagar por la transacción (incluidas «baseFeePerGas» y «maxPriorityFeePerGas»).firma– se deriva de la clave privada de la cuenta remitente y se crea cuando el remitente firma la transacción.
Como se puede observar en los campos anteriores, el término «gas» aparece mencionado varias veces. Es un elemento importante de una transacción. Las transacciones utilizan el gas como combustible para ejecutarse y ser minadas en la cadena de bloques, pero, lo que es más importante, las comisiones de gas ayudan a mantener segura la red de Ethereum. El gas se paga en Ether (la moneda nativa de Ethereum), pero se expresa en otras unidades, como Wei y Gwei, para que sea más fácil de medir. El Wei se utiliza para describir transacciones de menor valor, mientras que el Gwei se emplea habitualmente al referirse a las comisiones de gas.
Ciclo de vida de una transacción
El ciclo de vida de una transacción puede simplificarse de la siguiente manera:
- Una cuenta externa crea un objeto de transacción.
- La cuenta que envía la transacción la verifica mediante una firma, lo que genera un hash de la transacción.
- La transacción se transmite por toda la red mediante un nodo de Ethereum.
- La ejecución de la transacción queda en espera hasta que esta se incluya en un bloque o se sustituya o cancele.
Configura tu punto de conexión de Ethereum en Quicknode
Ahora vamos a poner en práctica todo lo que hemos aprendido. Configuraremos fácilmente un punto de conexión de Ethereum con Quicknode y lo utilizaremos para recuperar una transacción mediante su hash. Si ya tienes una cuenta, ve a la página «Endpoints» y activa un punto de conexión de la red principal de Ethereum. Si no es así, crea una cuenta en nuestra página de registro.

Visualización de datos de transacciones mediante programación
Empieza abriendo la ventana del terminal y ejecuta el comando rizo (comprueba que tengas las dependencias adecuadas). Si obtienes la respuesta (prueba curl --help o curl --manual (para más información), estupendo, ya tienes las dependencias necesarias y puedes ejecutar el código de curl que aparece a continuación.
Copia el código que aparece a continuación y sustituye el marcador de posición de la URL por tu punto final de Quicknode. Pega el código modificado en tu terminal y pulsa Intro.
curl -X POST https://YOUR-QUICKNODE-ENDPOINT \
-X POST \
-H "Content-Type: application/json" \
--data '{"method":"eth_getTransactionByHash","params":["0xb1fac2cb5074a4eda8296faebe3b5a3c10b48947dd9a738b2fdf859be0e1fbaf"],"id":1,"jsonrpc":"2.0"}'
El resultado debería contener los mismos valores que se muestran a continuación:

La mayor parte de los datos que se obtienen están en formato hexadecimal, pero si quieres descodificarlos fácilmente, puedes utilizar recursos como Etherscan o bibliotecas de programación como Ethers o Web3.py.
Para ver otros puntos finales RPC de Quicknode a los que puedes acceder, consulta nuestra documentación de Quicknode.
Conclusión
¡Y ya está! En esta guía hemos explicado los conceptos básicos de las transacciones en Ethereum. Recuerda que Ethereum sigue un modelo de saldo de cuenta y puede utilizar diferentes tipos de transacciones para distintos casos de uso. Esperamos que sigas ampliando tus conocimientos y los compartas con los demás.
Suscríbete a nuestro boletín para recibir más artículos y guías sobre Ethereum. No dudes en ponerte en contacto con nosotros a través de Twitter si tienes algún comentario. Siempre puedes charlar con nosotros en nuestro servidor de la comunidad de Discord, donde encontrarás a algunos de los desarrolladores más geniales que jamás hayas conocido :)
¡Nos encanta recibir comentarios!
Si tienes algún comentario o sugerencia sobre nuevos temas, no dudes en hacérnoslo saber. Nos encantaría saber tu opinión.
