Transacciones Bitcoin, ¿Cómo funcionan?
Bitcoin, el dinero programable. Así se le conoce entre muchas de sus definiciones. El poder de Bitcoin es muy grande debido a que las transacciones pueden ir acompañadas de unas instrucciones que se ejecutan de la forma deseada, haciendo de Bitcoin un entorno donde la creatividad la está llevando a nuevos horizontes, pero la mayoría de las transacciones son simples: Entrada y salida. Descubre cómo funcionan las transacciones Bitcoin.
Cómo funcionan las transacciones Bitcoin
Las transacciones Bitcoin son entendidas como los envíos de bitcoins. Todas ellas no son más que registros guardados en la cadena de bloques (BlockChain)
Anteriormente te enseñábamos cómo funcionan los monederos Bitcoin para guardar y mover tus bitcoins. Pero ahora te mostraremos que hace realmente ese monedero.
¿Cómo es una transacción de Bitcoins?
Imagina el siguiente escenario: María le envía bitcoins a Pedro.
La transacción tendrá tres partes:
1. Entrada/s (Input/s). Apartados de una dirección de María que contienen bitcoins.
2. Cantidad. La cantidad de Bitcoins que María le envía a Pedro.
3. Salidas (Output/s). El monedero de Pedro.
Esta estructura tiene un diseño curioso, con entradas y salidas, pero con un objetivo muy concreto: mantener la seguridad de Bitcoin. Todo ello firmado con la claves criptográficas que certifican su validez.
El ejemplo anterior muestra los ingredientes principales que toda transacción en Bitcoin tiene. Esta operativa internamente es representada bajo Bitcoin scripting (El código de programación interno que posee Bitcoin), y aunque su potencial es muy grande, la gran mayoría de las transacciones en Bitcoin actualmente responden a ese esquema:OP_DUP OP_HASH160 b2089ebaad05c87a6d714cc33fbaa8cf181a4e30 OP_EQUALVERIFY OP_CHECKSIG
Imagina que Maria posee el control de una dirección con 1 bitcoin. Si solo quiere mandar a Pedro 0.3 bitcoins y no existiera el concepto de “entradas” no habría forma de que el sistema pudiera saber que parte de ese 1 es el 0.3 enviado pudiendo reenviarse. Por ello existe el concepto de entradas, a las cuales se le asocian los bitcoins que llegan a una dirección.
De esta forma se cogen las entradas suficientes para alcanzar la cantidad deseada, y si para alcanzar 0.3 ha tenido que seleccionar 3 entradas de 0.12 cada una, siendo el resultado 0.36, los otros 0.06 restante se envían a una dirección propia indicándola como salida junto a la dirección a la que se le quería mandar 0.3.
Es decir, tendríamos este escenario de entradas y salidas:
La dirección propia donde se mandan los 0.06 BTC restantes puede ser la misma dirección que cualquiera asociada a las entradas o una nueva. A esto se le llama dirección de cambio.
Es importante entender también que en una misma transacción pueden haber tantas entradas de una misma dirección o varias como se desee. Lo mismo ocurre con las salidas. Esto permite hacer en una misma transacción múltiples envíos a personas diferentes con un sólo pago de comisiones a los mineros. Esta funcionalidad la explotan algunos monederos para ahorrar costes.
La forma que tiene internamente el protocolo de recompensar a los mineros viene de los fondos que no se asignen a ninguna dirección. Todos los bitcoins restantes en una transacción que no se asignen a ninguna dirección se los queda el minero que mine el bloque con tu transacción dentro y son imposibles de recuperar.
¿Cómo se envía?
Para enviar bitcoins necesitas dos cosas: una dirección de Bitcoin y una clave privada.
La dirección de Bitcoin es la clave pública de la clave privada del dueño de esos bitcoins. Ambas claves son una secuencia de letras y números, pero la dirección (la clave pública) sigue un patrón determinado que empieza por el carácter “1” (El cual es el indicador que se trata de una dirección Bitcoin y no de otro tipo de criptomoneda)
A su vez la clave privada se genera a partir de una semilla que tu o el software que utilices te asigna automáticamente. Suelen ser semillas complejas para evitar que otras personas puedan dar con la misma cadena de caracteres que deriven en la misma clave privada y pública que la tuya. Dicho ataque de fuerza bruta es imposible si el software que usas ha seguido unas mínimas precauciones en su desarrollo.
Pero volviendo al escenario de Maria y Pedro…
Cuando María quiere enviar Bitcoins a Pedro, utiliza su clave o claves privada/s para firmar cada una de las entradas de la transacción (el origen).
Cómo Bitcoin utiliza el cifrado asimétrico de clave pública y privada, los nodos pueden validar rápidamente si la transacción es una transacción autorizada por su poseedor debido a que pueden corroborarlo con la dirección de origen, que es la clave publica como hemos dicho anteriormente.
Esta transacción es retransmitida y compartida por todos los nodos de la red, registrándola en sus correspondientes cadenas de bloque.
Algunos nodos, además, son mineros. Los cuales usarán esa transacción junto a miles más para resolver un problema matemático. Aprende más aquí sobre los mineros.
¿Sabes cómo funcionan las transacciones Bitcoin?
¿Por qué a veces tengo que esperar varios minutos a que se realice la operación?
Los bitcoins pueden ser enviados siempre y se verán en el destino en segundos. No es necesario venir de entradas previamente confirmadas para ser reenviadas.
Las confirmaciones solo dan la seguridad al destinatario que el dinero es suyo, debido a ataques del tipo “Doble gasto” o el “Control de la minería del 51%”
El protocolo Bitcoin establece que cada bloque se mina en una media de 10 minutos. No es algo fijo, a veces pueden minarse en una hora 3 bloques y en la siguiente 10. Pero la red se va autorregulando para que la media diaria de bloques minados gire en torno a los 10 minutos.
¿Se cobran comisiones por hacer transacciones Bitcoin?
De momento no son obligadas, pero son recomendadas en la mayoría de los casos, ya que hacerlo determina obtener confirmaciones con mayor rapidez.
Pueden hacerse envíos sin pagar comisiones ya que por el momento aun existen mineros que las operan, pero van quedando cada vez menos.
Normalmente una transacción sencilla o compuesta de múltiples entradas y salidas tiene un coste de 0.0001 BTC ($0.03) si se quiere tener una prioridad alta.
También es importante entender que las comisiones que se pagan vienen determinadas por la cantidad de entradas y salidas que se pongan en una transacción, no por la cantidad de dinero que se envíe, entre los factores más determinantes.
Si tu transacción está cargada de entradas y salidas supone una transacción con más datos a analizar y distribuir, con lo que te pedirán más comisión para darle la etiqueta de prioridad alta.
Prioridad alta significa que tu transacción sea añadida en el siguiente bloque, empezando a recibir confirmaciones.
Si quieres conocer en mayor detalle como se determina la comisión, te dejamos esta página donde te explican el algoritmo para determinarla y considerar a una transacción con prioridad alta.
A medida que la recompensa por minar en forma de bitcoins decrece en rentabilidad, los mineros aplicarán comisiones a las transacciones Bitcoin a cambio de aportar poder computacional a la red para que el sistema sea sostenible, aunque se estima que nunca superen las tradicionalmente cobradas por bancos y otras entidades.
¿Qué pasa si solo quiero enviar parte de un bitcoin?
Cada bitcoin puede dividirse hasta en cien millones de partes.
Un “satoshi” es cómo se denomina a la unidad más pequeña de un bitcoin, en honor del creador de Bitcoin, el desconocido “Satoshi Nakamoto“.
En una transacción pueden enviarse tantos satoshis como se quiera, siempre y cuando superen los 546 satoshis (0.00000546 BTC) que es la cantidad mínima para evitar colapsar la red, lo que se conoce como “Bitcoin dust limit“.
¿Bitcoin Scripting? ¿OP_RETURN?
Si, has escuchado bien, Bitcoin Scripting. Por ello se le llama dinero programable. Los monederos tradicionales solo se encargan de hacer un tipo de combinación concreta de este lenguaje que al final se traduce en un envío de bitcoins como te hemos descrito anteriormente. Pero Bitcoin Scripting permite infinidad de combinaciones de ese lenguaje para hacer transacciones Bitcoin con diferentes comportamientos. Todo a través de su lenguaje.
Además existe un campo en todas las transacciones Bitcoin llamado OP_RETURN que puede ser utilizado para transmitir cualquier tipo de información.
Pero este es un apartado extenso y fascinante que merece su própio capítulo ya que es el punto donde nacen multitud de aplicaciones novedosas y creativas a todo tipo de sectores.
¿Qué es Minar Bitcoins?
Minar Bitcoins
En cualquier sistema monetario tradicional, los gobiernos simplemente imprimen más dinero cuando lo necesitan.
En lo que respecta a Bitcoin, este no se crea, sino que se descubre.
Miles de ordenadores de todo el mundo “minan” bitcoins compitiendo unos con otros.
Los mineros obtienen los bitcoins como recompensa a la resolución de un problema matemático en el que cada 10 minutos compiten miles de nodos siendo la red de computación más potente que hoy en día existe (Si, por encima incluso que NSA o el todopoderoso Google).
Este reto matemático siempre es igual en su proceso pero las variables son diferentes y solo puede resolverse probando números al azar sin parar hasta dar con el resultado que se busca en ese momento. El primero que lo consiga se lleva larecompensa. Esto genera competencia y búsqueda de eficiencia mejorando los ordenadores para este objetivo, a los que llaman mineros.
¿Cómo funciona el minado?
La gente envía de forma constante bitcoins de un lado a otro pero salvo que alguien registrase todas estas transacciones, nadie podría comprobar quién ha pagado qué en un momento determinado.
La red de Bitcoin gestiona esto dejando constancia de todas las transacciones llevadas a cabo en un periodo determinado en una lista, llamada bloque.
El trabajo de los mineros es confirmar esas transacciones y escribirlas en el “libro mayor” (cadena de bloques)
Haciendo un “hash” de ello
Este “libro mayor” es una larga lista de bloques conocida como la “cadena de bloques”.
Puede utilizarse para explorar cualquier transacción que haya tenido lugar entre direcciones de bitcoin en cualquier lugar.
Cada vez que se crea un nuevo bloque, se añade a la cadena, creando un lista cada vez mayor con todas las transacciones que se han hecho en toda la historia de la red de Bitcoin.
Una copia actualizada en tiempo real de los bloques se descarga en cada ordenador o nodo que esté aportando poder computacional a la red.
Este libro mayor tiene que generar confianza y todo esto se sostiene de forma digital. ¿Cómo podemos asegurarnos de que la cadena de bloques permanece intacta y nadie la manipula?
Aquí es donde entran en juego los mineros.
Cuando se crea un bloque de transacciones, los mineros dan lugar a él siguiendo un proceso.
Cogen la información del bloque y le aplican una fórmula matemática, convirtiéndolo en algo diferente.
Esta nueva “pieza de información” es más corta y en apariencia es una secuencia de números y letras aleatoria denominada técnicamente “hash”.
Este “hash” se almacena con el bloque, al final del mismo, en último lugar en la cadena en ese momento.
Los “hash” tienen algunas propiedades interesantes. Es fácil producir un “hash” de un conjunto de datos como un bloque de transacciones, pero es prácticamente imposible acceder a los datos simplemente con el “hash”.
Mientras que es muy fácil producir un “hash” de un gran conjunto de datos, cada uno es único.
Si cambias un único carácter del bloque, el “hash” cambiará por completo.
Los mineros no solo usan las transacciones de un bloque para generar un “hash”. También se utilizan otros datos. Uno de estos datos es el “hash” del último bloque añadido a la cadena.
Debido a que el “hash” de cada bloque se produce utilizando el “hash” del bloque inmediatamente anterior, se convierte en una versión digital de un “sello de lacre”.
Confirmar que ese bloque y todo aquel que va a continuación es legítimo.
Si intentases falsificar una transacción cambiando un bloque que ya había sido almacenado en la cadena, el “hash” de ese bloque cambiaría.
Si alguien comprobase la autenticidad del bloque aplicando la función matemática encima, se encontrarían con que el “hash” sería distinto de aquel que ya está almacenado con ese bloque en la cadena y, como consecuencia, el bloque sería automáticamente identificado como falso.
Los bitcoins ni se crean ni se destruyen, ¡sino que se descubren! ¿Sabes cómo?
Compitiendo por monedas
De esta manera los mineros “sellan” los bloques. Todos compiten entre ellos para hacer esto, utilizando software escrito específicamente para minar bloques.
Cada vez que alguien crea un “hash” con éxito, se lleva una recompensa de 25 bitcoins, la cadena de bloques se actualiza y todo el mundo en la red es notificado con ello.
Ese es el incentivo para seguir minando y permitir que se sigan llevando a cabo transacciones.
El problema es que es muy fácil producir un “hash” directamente a partir de un conjunto de datos.
Ya que para un ordenador resulta muy fácil hacer esto, la red de Bitcoin ha de hacerlo más difícil, ya que de otra manera todo el mundo estaría creando “hashes” de centenares de bloques de transacciones cada segundo y todos los bitcoins se minarían en minutos.
El protocolo de Bitcoin simplemente no aceptaría ningún “hash” antiguo. Requiere que el “hash” de cada bloque sea de una manera determinada, debiendo tener un número de ceros determinado al principio.
No hay manera de saber cómo va a ser un “hash” antes de producirlo y, tan pronto se incluya un nuevo dato, el “hash” será totalmente diferente.
Se supone que los mineros no interaccionan con los datos referentes a transacciones que hay dentro de cada bloque, pero deben cambiar los datos que están utilizando para crear un “hash” diferente.
Hacen esto utilizando otro trozo de información aleatorio que se conoce como “nonce”, que se utiliza con los datos de la transacción para crear un “hash”.
Si el “hash” no se ajusta al formato requerido, el “nonce” se cambia y se prueba de nuevo creando un nuevo hash otra vez.
Puede conllevar varios intentos encontrar un “nonce” que funcione y todos los mineros de la red están intentando hacerlo al mismo tiempo. De hecho lleva millones de intentos, por miles de ordenadores que todos intentan dar con el numero que devuelva el patrón que en ese momento se está pidiendo.
Así es como los mineros se “ganan su sustento”.
¿Quién ha creado Bitcoin? Haz click aquí para descubrir al aún desconocido “Satoshi Nakamoto”.
A continuación otro video de un usuario en su proceso de minado de bitcoins.