¿Cómo se guarda una transacción de BTC en un bloque de la cadena y que lectura hacemos de la misma?
Un bloque es minado cada 10 minutos. Aproximadamente son 2.048 transacciones como mucho las que hay en un bloque.
1 Bloque = 1024kb (1Mb): 1024 / 0.5 = 2048 transacciones de promedio caben en un bloque.
Veamos una de las transacciones del Bloque 673124 e intentemos entenderla.
https://www.blockchain.com/btc/block/673124
¿Cómo se ha iniciado la transacción?. Una persona ha querido enviar 0,24BTC (desde 2gether que es una empresa en la que tenía BTC) a una cartera fría (Trezor-T).
Desde Trezor ha seleccionado Enviar y Trezor le ha dado una @pública a donde tenía que enviar los 0,24BTC, concretamente la dirección pública ha sido:
3QFbmTKR6b1YMXfivoaAQZ2mbedGLEn6xq (son 34 caracteres).
A continuación ha ido a la app de 2gether y ha seleccionado Enviar BTC. 2gether le ha pedido la dirección pública, la ha colocado y acto seguido la ha enviado. Veamos dicha transacción.
La transacción empieza por 3c929….62 son 64 caracteres en hexadecimal, implica 32 bytes porque cada carácter son 4 bits. Por lo tanto 8 bits son 1 byte y 64 / 2 = 32 bytes.
La fecha que fue minado el 4 de marzo de 2021 a las 12:19:13
¿En qué Bloque fue minado dicha transacción?, empieza por 00000000……3777 son 19 CEROS, y esa es la dificultad que se revisa cada 2016 bloques (unos 14 días. Se revisa si poner más ceros o menos ceros. Cuantos más ceros es mayor dificultad y al revés). El bloque siguiente (el 673125 apuntará a esta dirección 00000….3777).
Total Input =5,14323104 Total Output = 5,14296888 Fees o comisión = 0,00026216
La suma del Output + la comisión ha de dar el Input. Es un asiento contable y ya sabéis que el Debe ha de ser igual al Haber. Todo asiento contable ha de cuadrar. En este libro contable o Bases de Datos de Bitcoin es igual. Cada Transacción es como un asiento contable y ha de cuadrar la Entrada con la Salida.
Hasta ahora muy bien pero se me ocurren dos preguntas:
- ¿Quién posee el Input, de quien son los 5,14323104? Y que después recibe en el output 5,14296888.
Responderé a esto con lo que yo creo que es: Esos 5,14323104 no son de la persona que hace la transferencia o la cuenta de la persona que hace la transferencia. Los 5,14323104 son del Exchange o empresa que lo hace. En este caso de 2gether. Es decir 2gether utiliza esos 5,14323104 como intermediario para hacer una transferencia de los 0,24BTC que el usuario quiere hacer. 2gether es un intermediario. Utiliza BTC suyos, envía 0,24BTC al usuario y 2 gether le resta esos 0,24 al usuario/cliente.
Eso en internet lo tenemos en cada momento. Yo me conecto a internet por wifi, solicito ver la web www.bbc.com y es el router de mi cia. Movistar, Vodafone, etc. el que hace la petición de la web. Cuando viene la web, el router de Movistar me la envía a mi portátil, móvil, etc.. Es así, Movistar es el intermediario. En realidad los routers tienen una Tabla de Rutas y saben perfectamente que ordenador y que ventana del navegador ha solicitado dicha web. Digo muy bien Ventana (imaginar que con Chrome abrimos 2 ventanas y accedemos a la misma web, en una ventana nos quedamos en la página principal y con la otra accedemos a los enlaces de la web). ¿Cómo sabe el Router a que ventana enviar la información?. Lo hace con los PUERTOS (2^16=65.536 en total). En las transacciones de BTC, etc. es igual. El control lo tienen los PROTOCOLOS y los programas.
- ¿Qué son las confirmaciones? Vemos que la transacción o el bloque entero ha tenido 7 confirmaciones. ¿Qué significa?
Muy sencillo, significa que ya hay 7 bloques minados posteriores y que puedes dar por segura que dicha transacción o las transacciones del bloque han sido correctas. Es así de simple. Es decir si el bloque es el 673124 ha tenido 7 conformaciones, implica que ya se ha minado hasta el 673130 o 673131. Significa que esa cadena es la correcta o lo que es lo mismo que la cadena donde se encuentra dicha transacción va a misa.
Todo OK. Sobre esto último, respecto a las confirmaciones, ya lo explicaré mejor por la importancia que tiene en el DOBLE GASTO.
Ya estoy. Solo os dejo el código o Script que la máquina o protocolo creó en dicha transacción. Este código se hace con el lenguaje Bitcoin Script. Lo hace la máquina de forma automática, pero entender que la transacción que hemos hecho se ha hecho con este código. Es un código lineal, es decir línea a línea. Es una pila donde entran las líneas una a una, y se ejecutan en el orden de entrada. No tienen estructuras de bucles, condicionales if, etc. Es como una pila, se ejecuta línea a línea secuencialmente. Su sencillez le hace muy robusto porque no habrá código que se ejecute permanentemente y bloquee el sistema. Así lo decidió Satoshi Nakamoto. Premió la seguridad por encima de todo. Entre otras cosas, por esto Bitcoin es tan seguro y perfecto.