Transacciones
Las transacciones son instrucciones firmadas criptográficamente que se emiten desde cuentas. Una cuenta iniciará una transacción para actualizar el estado de la red Ethereum. La transacción más sencilla es transferir ETH de una cuenta a otra.
Requisitos previos
Para entender más el contenido de esta página, te recomendamos que leas primero la página sobre Cuentas, así como nuestra Introducción a Ethereum.
¿Qué es una transacción?
Una transacción de Ethereum hace referencia a una acción iniciada por una cuenta de propiedad externa, en otras palabras, una cuenta controlada por un humano, no un contrato. Por ejemplo, si Bob le envía 1 ETH a Alice, este debe debitarse de la cuenta de Bob y acreditarse en la cuenta de Alice. Esta acción modificadora del estado de la red tiene lugar en una transacción.
Diagrama adaptado de Ethereum EVM ilustrado
Las transacciones, que modifican el estado de la EVM, se deben transmitir a toda la red. Cualquier nodo puede transmitir una solicitud de una transacción que se va ejecutar en la EVM; a continuación, un minero ejecutará la transacción y propagará la modificación de estado que resulte de ello al resto de la red.
Las transacciones necesitan una comisión y deben minarse para convertirse en transacciones válidas. Para simplificar esta descripción general, abarcaremos las comisiones de gas y el minado por separado.
Una transacción enviada incluye la siguiente información:
destinatario
: La transacción destinataria (en caso de que sea una cuenta de propiedad externa, la transacción transferirá valor. Si se trata de un contrato, la transacción ejecutará el código del contrato)firma
: Identificador del remitente. Se genera cuando, mediante la clave privada, se firma la transacción y se confirma que el remitente la ha autorizadovalor
: Cantidad de ETH que el remitente transfiere al destinatario (en WEI, una denominación de ETH)datos
: Campo opcional en el que se incluyen datos arbitrarios.LímiteDeGas
: Cantidad máxima de unidades de gas que puede consumir la transacción. Las unidades de gas representan pasos computacionalesPrecioDeGas
: La comisión que el remitente paga por unidad de gas.
El gas es una referencia al trabajo computacional que se necesita para que el minero procese la transacción. Los usuarios tienen que pagar una comisión por ese trabajo computacional. El límiteDeGas
y el precioDeGas
determinan la comisión de gas máxima que se le paga al minero. Mas ínformación acerca del gas.
El objeto de la transacción luce de la siguiente forma:
1{2 from: "0xEA674fdDe714fd979de3EdF0F56AA9716B898ec8",3 to: "0xac03bb73b6a9e108530aff4df5077c2b3d481e5a",4 gasLimit: "21000",5 gasPrice: "200",6 nonce: "0",7 value: "10000000000",8}9Copiar
Es necesario que se firme este objeto mediante la clave privada del remitente. De esta forma, se prueba que la transacción solo pudo haberla originado el remitente y que no se envió de forma fraudulenta.
Un cliente de Ethereum como Geth manejará el proceso de firmado.
Ejemplo de una llamada JSON-RPC:
1{2 "id": 2,3 "jsonrpc": "2.0",4 "method": "account_signTransaction",5 "params": [6 {7 "from": "0x1923f626bb8dc025849e00f99c25fe2b2f7fb0db",8 "gas": "0x55555",9 "gasPrice": "0x1234",10 "input": "0xabcd",11 "nonce": "0x0",12 "to": "0x07a565b7ed7d7a678680a4c162885bedbb695fe0",13 "value": "0x1234"14 }15 ]16}17Mostrar todoCopiar
Ejemplo de respuesta:
1{2 "jsonrpc": "2.0",3 "id": 2,4 "result": {5 "raw": "0xf88380018203339407a565b7ed7d7a678680a4c162885bedbb695fe080a44401a6e4000000000000000000000000000000000000000000000000000000000000001226a0223a7c9bcf5531c99be5ea7082183816eb20cfe0bbc322e97cc5c7f71ab8b20ea02aadee6b34b45bb15bc42d9c09de4a6754e7000908da72d48cc7704971491663",6 "tx": {7 "nonce": "0x0",8 "gasPrice": "0x1234",9 "gas": "0x55555",10 "to": "0x07a565b7ed7d7a678680a4c162885bedbb695fe0",11 "value": "0x1234",12 "input": "0xabcd",13 "v": "0x26",14 "r": "0x223a7c9bcf5531c99be5ea7082183816eb20cfe0bbc322e97cc5c7f71ab8b20e",15 "s": "0x2aadee6b34b45bb15bc42d9c09de4a6754e7000908da72d48cc7704971491663",16 "hash": "0xeba2df809e7a612a0a0d444ccfa5c839624bdc00dd29e3340d46df3870f8a30e"17 }18 }19}20Mostrar todoCopiar
- la propiedad
raw
es la transacción firmada en Recursive Length Prefix (RLP) - la propiedad
tx
es la transaccion firmada en formato JSON
Mediante el hash de la firma, se puede probar criptográficamente que la transacción se originó del remitente y que se envió a la red.
Sobre el gas
Como ya se mencionó, las transacciones cuestan gas para ejecutarse. Las transacciones de transferencia simple requieren 21 000 unidades de Gas.
De modo que para que Bob le envíe a Alice 1ETH a un gasPrice
de 200 Gwei, él necesitará pagar la siguiente comisión:
1200 x 21000 = 4 200 000 GWEI2--o--30,0042 ETH4
La cuenta de Bobs será debitada -1,0042 ETH
La cuenta de Alice se acreditará +1,0 ETH
El procesamiento del minero de la transacción obtendrá +0,0042 ETH
El gas también es necesario para cualquier interacción del contrato inteligente.
Diagrama adaptado de Ethereum EVM ilustrado
Cualquier gas no utilizado en una transacción es reembolsado a la cuenta de usuario.
Ciclo de vida de la transacción
Una vez que la transacción ha sido enviada ocurre lo siguiente:
- Una vez que envíes una transacción, la criptografía genera un hash de transacción:
0x97d99bc7729211111a21b12c933c949d4f31684f1d6954ff477d0477538ff017
- A continuación, la transacción se transmite a la red e incluida en un pool con muchas otras transacciones.
- Un minero debe elegir tu transacción e incluirla en un bloque para verificar la transacción y considerarla "exitosa".
- Puedes terminar esperando en esta etapa si la red está ocupada y los mineros no son capaces de mantenerse al día. Los mineros siempre priorizarán las transacciones con mayor
PRECIO DE GAS (GASPRICE)
porque consiguen mantener las comisiones.
- Puedes terminar esperando en esta etapa si la red está ocupada y los mineros no son capaces de mantenerse al día. Los mineros siempre priorizarán las transacciones con mayor
- Tu transición también obtendrá un número de confirmación de bloque. Este es el número de bloques creados desde el bloque en el que se incluyó tu transacción. Cuanto mayor sea el número, mayor será la certeza de que la transacción fue procesada y reconocida por la red. Esto sucede porque, a veces, puede que el bloque en el que se ha incluido tu transacción no haya entrado en la cadena.
- Cuanto mayor sea el número de confirmación del bloque, más inmutable será la transacción. Por eso, para las transacciones con valores más altos, se precisan más confirmaciones de bloques.
Una demostración visual
Observa a Austin mientras te guía por las transacciones, el gas y la minería.
Leer más
¿Conoces algún recurso en la comunidad que te haya servido de ayuda? Edita esta página y añádelo.