Se esfuerzan por ser los primeros en resolver problemas matemáticos y crear nuevos bloques
-
con el objetivo de ganar recompensas monetarias
-
y la condición de demostrar que han trabajado por ello,
-
y por lo tanto, ayudado a mantener la red segura.
-
Los mineros siempre ejecutan un nodo completo, pero también:
-
empaquetan las transacciones válidas en grupos, creando y proponiendo bloques
-
a través de un mecanismo que le da seguridad a la red llamado Proof of Work, PoW
-
(de ahí el nombre "prueba de trabajo", en inglés proof-of-work).
-
Es necesaria para la seguridad, lo que previene el fraude y permite la confianza.
-
La recompensa de cada bloque consiste en:
-
Nuevo BTC fabricado por el software de Bitcoin, y en adición,
-
las comisiones incluidas por las transacciones incluidas en dicho bloque.
Una diferencia clave entre los nodos completos y los nodos mineros:
-
Los nodos mineros pueden proponer nuevos bloques a la red Bitcoin
-
Tratan de resolver rompecabezas criptográficos en un proceso llamado "minería".
-
Deben demostrar que es son los que han realizado el trabajo requerido
-
Por lo tanto, pueden recibir recompensas por los bloques
-
Los nodos completos no pueden proponer bloques nuevos
-
Por lo tanto, no pueden recibir recompensas
De nuevo volvamos a una analogía:
-
Cada minero tiene un dado especial que tiene marcados los números 1 hasta el 1000, es decir, tiene 1000 caras.
-
Los mineros se alistan para entrar a una competencia, con el incentivo de ganar un poco más de 6.25 bitcoin en los próximos 10 minutos.,
-
Bitcoin escoge un número objetivo del 1-1000 y lo publica para que todos lo vean en la red. Digamos que escoge el #8. Empieza la competencia.
-
El objetivo es caer en un número menor a 8.
-
Algunos mineros tienen ventajas y una probabilidad mayor de ganar: Porqué?
-
Tienen más poder adquisitivo y han comprado más de un dado.
-
Otros lanzan a una velocidad mayor que otros.
-
Comienza la competencia:
-
Los mineros empiezan a lanzar su dado cientos de veces pero esto requiere de mucho trabajo. Se les cansa la mano.
-
Un minero afortunado alza la mano y dice “gane!”.
-
Todos los otros mineros paran de lanzar sus dados y miran la mesa en la que están jugando.
-
De esta manera, todos pueden verificar si está diciendo la verdad.
-
Si la mayoría, por consenso está de acuerdo que el minero es el ganador, se le da su recompensa.
-
Comienzan de nuevo.
-
Si entran más mineros a la próxima competencia, Bitcoin reduce el número objetivo de modo que siempre se demore aproximadamente 10 minutos para que alguien gane.
-
Es como una máquina transformadora:
-
se introduce algo, se modifica mediante unas reglas estrictas, y surge otra completamente diferente. Es decir:
-
Se suministra el dato de entrada, x, o los datos que uno ingresa,
-
Se le aplican operaciones matemáticas (suma, resta, multiplicación, etc.) predefinidas,
-
El resultado es una salida, f(x),y.
Ejemplo: f(x)=3x+4 me dice:
-
multiplique el dato de entrada (x) por 3, súmele 4 y obtenga la salida f(x), o y.
-
Cual sería la respuesta de f(2)? Es decir, cual es el resultado de y cuando x=2?
-
Ahora, cual es la pregunta aquí? f(x)=15. Buscamos encontrar la entrada o la salida? Es posible encontrar el valor? Veamos…. f(x)=3x+4=15. 3x+4=15…. x=?
Algunas funciones son unidireccionales.
-
Tienen la propiedad de ser fáciles de calcular pero difíciles de invertir.
-
Aunque sepamos el resultado, no podremos descifrar los datos de entrada.
Si odias las matemáticas, vamos a formular una analogía que te ayudará a entender.
Vamos a hacer un jugo de frutas rojas.
-
Estos son los datos de entrada: (t=taza)
-
1 t agua, 3 cubos de hielo, 18 frambuesas, 8 fresas, 15 t moras y 1/5 de t azúcar.
-
La operación de la función:
-
Lo mezclamos todo junto en la licuadora .
-
Dato de salida resultado:
-
Resulta un jugo delicioso.
Es casi imposible que otra persona descifre cuales son sus ingredientes y porciones exactas.
-
Esto es lo que significa una función unidireccional.
-
El jugo no se puede convertir de nuevo en sus datos de entrada.
Bitcoin usa criptografía-una rama de matemáticas
-
Su proceso de entradas y salidas es muy parecido .
-
Una función hash criptográfica:
-
es una operación criptográfica que toma cualquier cantidad de datos,
-
Y devuelve un valor hash, de identificadores
-
únicos e irrepetibles, *determinísticos y caóticos*
-
No existen restricciones en los datos de entrada,
-
el hash siempre resulta en la misma longitud de caracteres
-
El hash también se considera como una huella digital de los datos de entrada
💡 Determinístico: las mismas entradas o iniciales producirán invariablemente las mismas salidas o resultados.
💡 Caótico: una entrada ligeramente diferente producirá una salida completamente diferente y no relacionada.
Qué es SHA 256?
-
La función hash particular que usa Bitcoin se llama SHA256.
-
Su resultado o hash siempre es Hexadecimal (números entre 0 y 9 y letras entre A y F).
-
SHA256(entrada)=hash
Vamos a crear hashes. Veamos los siguientes ejemplos:
SHA256(Dalia)=
bbadb37bc80b041a1cafdfadf1efd93d6386117b33046d650e75ec2cb101758c
SHA256(DaliaP)=
25cad1ff3deb7bc5ba54ccf1f0fe8e8ff4a17f58826847b8cae2ddbd6cd6ab77
SHA256(Hola, me llamo Dalia. Soy de Medellín, Colombia.)=
619010e5ab4877ef398e82a277e7134529a5ff1875f7671ff0177c7ab0302423
Cómo crear un hash? En los siguientes sitio web podremos practicarlo:
Primero, qué pasa cuando ingresas el hash 256 de Dalia? Compáralo con el que está escrito aquí.
Te das cuenta que aunque el resultado es aleatorio,
-
el resultado de una entrada en particular siempre será el mismo.
-
Si en vez de nombre, apellido y fecha de nacimiento, nos identificáramos con un número así, no habría el problema de tener dos “María” o dos “José” en clase.
Cual es el hash de tu nombre? Tu nombre y apellido?
Qué pasa si cambias una letra a tu nombre? Hubieras podido predecir este hash?
Qué es un “nonce”? (Number used once)
-
Simplemente es un número usado una vez.
-
Los “nonce” son muy útiles para la minería ya que uno de los mayores objetivos es encontrar resultados de los SHA256(Entrada) que satisfagan ciertas condiciones predeterminadas.
Supongamos que el objetivo es encontrar un hash que inicie con el número “cero”
-
cambiándole solo el último dígito a SHA(DaliaP). El nonce cambiaría la “P” :
SHA(Dalia1)= c2cb88c9aec429a7fe9194351e748247f668241ff75c708b43ea83ecd730268f
SHA(Dalia2)=17df2ae3b1dec56c7bde0cf8b161f24329d351e08cb797adbd76af46401dadf3
…..estuvimos de buenas y sólo necesitamos intentar ocho veces para lograr nuestro objetivo:
SHA(Dalia8)=093d4ddb855114f49f3b775803529ed1cbd5598b5995c327091552bab5672658
***Qué es un Árbol de Merkle?***
Una estructura de datos dividida en varias capas de hashes que permite verificar,
-
de forma rápida y eficaz, la información de todas las transacciones.
-
Como un árbol invertido, en la que se parte desde las hojas
-
y se escala progresivamente a través de las ramas hasta llegar al nodo raíz
-
identificador principal que permitieverificar el conjunto de datos como un todo.
-
Su raíz única final, que contiene toda la información de todas las transacciones,
-
se denomina Merkle Root o Raíz de Merkle Root
Ahora volvamos al proceso de Bitcoin:
-
Los mineros tienen libertad de escoger transacciones para incluir en su próximo bloque.
-
seleccionan y agrupan nuevas transacciones verificadas a un nuevo “bloque candidato”
C*uales transacciones deben escoger para su “bloque candidato”?*
-
Eligen aquellas con mayores incentivos monetarios y que ocupen menos memoria.
-
Los depositantes agregan comisiones (o propinas) para incentivar a los mineros
-
Adicionalmente, los mineros están motivados a trabajar honradamente.
-
Entre más transacciones hayan en la mempool, más congestionada la red.
-
Los incentivos monetarios generalmente son mayores cuando hay mucho tráfico
-
Durante mucho tráfico, los mineros eligen transacciones que tienen comisiones más altas.
-
Una vez el tráfico haya disminuido-se agregan aquellas con menores incentivos.
En qué consiste cada bloque candidato?
-
El tamaño de un bloque es de aproximadamente 2.5 MB
-
Cada bloque tiene capacidad para unas pocas miles de transacciones como máximo,
-
por lo tanto, es importante elegir eficientemente
-
Incluye un encabezado de bloque
-
Este encabezado de bloque se somete a la función hash
-
SHA256(encabezado)=RESULTADO;
Para qué se usa este RESULTADO ?
-
El objetivo es producir un identificador válido para un nuevo bloque
-
que encaje perfectamente detrás del último bloque en la cadena existente,
-
Para esto, un minero debe producir el “hash ganador”
-
el cual será deberá ser por debajo de un “valor objetivo” específico.
-
Siempre y cuando el RESULTADO sea mayor que el hash deseado,
-
el minero ajusta un nonce y vuelve a intentarlo.
-
Los mineros repiten esto varios miles de veces por segundo.
-
con la finalidad de ganar la recompensa del bloque.
-
y crear una “huella digital” o un hash único de dicho bloque
-
El proceso requiere cambiar el nonce miles y miles de veces,
-
generando muchísimos posibles RESULTADOS
-
hasta lograr el “hash ganador” antes que cualquier otro minero.
-
Muy similar a nuestro ejemplo inicial de lanzar el dado muchas veces,
-
hasta que un minero logra ganar con un RESULTADO debajo de el objetivo.
-
Esto significa que cualquier nodo minero en la red puede extraer un nuevo bloque,
-
pero necesita gastar energía para poder hacerlo.
Qué pasa cuando se encuentra el “hash ganador”?
-
Un minero afortunado, finalmente produce el hash ganador,
-
Transmite su éxito a toda la red.
-
Ese hash se convierte en el “hash del bloque” o su identificador único
-
Para el resto de los mineros, la confirmación de la validez del bloque es un proceso simple.
-
Sólo se debe asegurar que todas las transacciones sigan siendo validas,
-
y que el hash del bloque sea menor que el “valor objetivo”.
-
Al ser confirmado el bloque, los otros nodos lo agregarán a la cadena existente
-
Todas las transacciones contenidas en dicho bloque quedarán permanentemente grabadas en la cadena de bloques
-
El proceso se repetirá aproximadamente cada 10 minutos
-
los mineros comenzarán a intentar extraer un nuevo bloque encima.
Y como se gana la recompensa el minero que ha encontrado el valor objetivo?
-
Todos los bloques candidatos crean una primera transacción que incluye una recompensa:
-
Contiene una cantidad de bitcoin nuevo que va a ser liberado cuando se cree el bloque
-
y la totalidad de las comisiones que generan las transacciones seleccionadas
-
Solamente el minero ganador puede cobrar dicha recompensa.
-
Por su gran esfuerzo computacional: PoW, o Prueba de Trabajo
-
PoW ha sido un método exitoso porque:
-
encontrar el hash es extremadamente difícil, pero verificarlo es sencillo.
-
A esta transacción se le llama coinbase (monedabase)
-
y es la primera en cada bloque de la blockchain.
-
Las transacciones obtienen una confirmación cuando son incluidas en un bloque y luego tras la confirmación de cada bloque posterior.
-
Para que dicho bloque se incluya en la cadena de bloques, se debe enlazar correctamente debajo de el último bloque creado en la red.
-
Una confirmación **en la blockchain, indica que “la transacción ha sido procesada y validada por la red y es muy poco probable que se revierta”.
-
Se recomienda esperar un mínimo de 6 confirmaciones para asegurarse de que los fondos fueron transferidos.
-
Bitcoin es conocida como la blockchain más segura y veraz que existe.
-
Cada bloque hace referencia a un bloque anterior,
-
a través del campo ‘bloque anterior’(previous hash) en la cabecera del bloque.
-
La secuencia de los hashes que unen cada bloque al previo
-
crea una cadena que se remonta hasta el el primer bloque jamás creado,
-
conocido como el bloque génesis.
-
Cualquier modificación mínima a cualquier transacción cambiará el hash del bloque,
-
y lo desligará del bloque anterior.
-
Si un hacker trata de alterar hasta una coma de una transacción,
-
se creará una cascada de fallas en la verificación de bloques posteriores.
-
Esto se debe a que cada bloque tiene información sobre el anterior.
Los bloques se componen de una cabecera de bloque y sus transacciones.
-
El encabezado contiene:
-
el resumen de los datos dentro del bloque, es decir,
-
-
todas las transacciones comprimidas en una raíz de Merkle
-
junto con el hash del bloque anterior en la blockchain y
-
un nonce, el cual puede cambiar tantas veces sea necesario en busca de “valor objetivo”
-
-
Mediante la función SHA256, se comprime toda la información contenida en el bloque.
-
Este resultado es el “hash del bloque” o representant su “huella digital”.
-
El nonce un campo es un número dentro de la cabecera:
-
Los mineros lo modifican hasta que el hash de la cabecera resulte en el objetivo de dificultad o el valor objetivo
-
El objetivo de dificultad siempre comienza con una cantidad de ceros.
-
La cantidad de ceros es variable.
-
Depende cuantos mineros están tratando de extraer el bloque.
Actividad:
En el siguiente link se puede analizar la cadena de bloques en tiempo real.
Visualización de los últimos bloques, las transacciones confirmadas y sin confirmar, el número de transacciones, utilización de memoria y valor aproximado del bloque completo, https://bits.monospace.live/
Cual fue el último bloque minado?
Cuantas transacciones se incluyeron en dicho bloque?
Cual es el valor total transado en bitcoin?
Cuanto fue el tamaño en Megabytes del bloque?
Con cuantos ceros comienza el nonce del bloque?
Cuanto ganó el minero en total?
Cual fue el valor total de las comisiones que recibió el minero por adicionar las transacciones a la red?
Escoge una de las transacciones de más valor del bloque. La cantidad de BTC se repartió a cuantos monederos?
Cuando un minero encuentra un nonce que, añadido al hash de cabecera, cumpla el objetivo de dificultad, lo añade a la cabecera del bloque nuevo y lo envía a la red para que el resto de mineros puedan comprobar que la solución es válida.