Entendiendo las transacciones de criptomonedas

#1: Introducción

César
4 min readJul 5, 2018

Un blockchain se construye a partir de la interacción de usuarios en una red sin un servidor central (P2P), que comparten información almacenada en una base de datos verificable (Blockchain).

Este flujo de información lo definimos como una “transacción”, que consiste en una modificación de las variables descritas en el protocolo que controla el funcionamiento de la red descentralizada.

Por ejemplo, en el caso de las criptomonedas, cada usuario del sistema se reconoce por una dirección (address), y cada transacción permite actualizar al usuario que controla una variable llamada Bitcoin, Ether, Chaucha, etc.

¿Qué es una address?

Las direcciones dentro de una red de criptomonedas son una cadena de texto, que para simplificar su uso se representan en base a códigos QR.

cesarM3tMsBkVcmz5bnTjD7N4VbdXDVDd4

Cualquier persona tiene la posibilidad de generar una dirección para identificarse dentro de una red, y este proceso se logra al seguir los pasos del algoritmo que define al blockchain.

El proceso más utilizado es el que propone Bitcoin, en donde se genera una “Llave Privada” de manera aleatoria y luego se utiliza la criptografía para construir una “Llave Pública”, que al ser hasheada entrega la dirección válida.

En resumen, un número aleatorio genera una llave privada, la llave privada genera una llave pública, y una llave pública genera una dirección.

Random 256 bytes => Privkey => Pubkey => Address

Gracias a este proceso, es posible que exista un número prácticamente infinito (2²⁵⁶) de direcciones disponibles para todos los usuarios de la red.

¿Qué es una transacción?

Las transacciones son conformadas por información de entrada (inputs), el resultado de la modificación de las entradas (outputs), la firma del creador de la transacción y un identificador (transaction ID) que es construido en base a los parámetros que incluye la transacción.

Por ejemplo, veamos la siguiente transacción (simplificada) almacenada en el blockchain de Chaucha:

{
"txid": "3d9424fd81d2a69dd56006f4f3ad04985565f2fec64fc5ef306b2bafae50907e",
"vin": [
{
"txid": "d5f07698ca861c546d42b437a42cc6ee2b97479c0c06d26e5c03457f880819b2",
"vout": 0
},
{
"txid": "3092b1ed5b53c2ddf3e5e754163d3767a902416d287cd0b73be7e8d821894805",
"vout": 0
}
],
"vout": [
{
"value": 20.74243739,
"n": 0,
"address": "cjXjbAjQSPW1kuRRFTCA4SFyufQWnXBfeM"
},
{
"value": 8.53449561,
"n": 1,
"address": "cbCfwcBSPrvnoBq6yNGDgq6iSS8tUyjdDj"
},
{
"value": 13.40303700,
"n": 2,
"address": "cWjzyUJaAGzCMj7FpvSovG5r9HeFafz1E3"
}
]
}

Esta transacción tiene un identificador que comienza con “3d9424f…”, y contiene dos entradas (“vin”) y tres salidas (“vout”).

Cada output de la transacción contiene una dirección de destino (“address”), un monto de salida (“value”) y un identificador de posición (“n”), y cada input es construido por el identificador de una transacción en el pasado (“txid”) y la posición del output que se quiere utilizar.

Una entrada es “el output de una transacción del pasado que no ha sido utilizado como entrada en ninguna otra transacción”, que es conocido como “Unspent Transaction Output” (UTXO), y permite comprobar la procedencia de los fondos utilizados en la transacción.

Cabe destacar que la resta entre las entradas y salidas de una transacción siempre entrega un valor que no es nulo, el cual es llamado “impuesto por transacción”.

Además de esta información, cada entrada debe ser firmada utilizando la llave privada correspondiente a la dirección que controla estos fondos, a modo de verificar que el creador de esta transacción es dueño de las criptomonedas a transferir.

Cuando una transacción es construida exitosamente, es transmitida en la red para que los demás participantes verifiquen su integridad, y si este proceso de verificación es correcto, la transacción pasa al proceso de minado para ser incluida en el blockchain.

¿Qué es la minería?

El proceso de verificación se realiza al contrastar una transacción con respecto al historial de transacciones que contiene el blockchain, a modo de comprobar que esta transacción cumple con el formato establecido en la red, y que las entradas de la transacción son firmadas correctamente por el dueño de los fondos.

Cuando una transacción pasa el proceso de verificación, es almacenada en un lugar llamado “Mempool” que contiene todas las transacciones recientes que no han sido incluidas en el blockchain, para luego permitir que cualquier usuario pueda construir un “bloque de transacciones” con un un tamaño máximo definido explícitamente por la red.

La inclusión de un nuevo bloque en el blockchain es una competencia, en donde los participantes deben cumplir con una serie de reglas para entregar una solución válida dentro de un intervalo de tiempo finito.

Cuando un participante logra construir un bloque válido es premiado con nuevas criptomonedas que genera la red (tasa de generación por bloque minado), junto con todos los impuestos de las transacciones incluidas en el nuevo bloque minado.

--

--

César

Mi opinión personal como fundador de Proyecto Chaucha.