Blockchain
Introducción
Qué es Blockchain
Estructura de un bloque
Merkle trees
Bitcoin network
La arquitectura de una red P2P
Minería y consenso
La economía de Bitcoin
Minando un bloque
Cambiando las reglas de consenso (forks)
Transacciones
Transacciones: outputs e inputs
Qué es Bitcoin Script
Transaction fees en Bitcoin
Keys and adresses
Llaves públicas y privadas / Bitcoin addresses
Formatos de llaves públicas y privadas
Tipos de wallets: nondeterministic, deterministic
Wallets
Seeds and mnemonic codes
Conclusión
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aproximadamente, cada 10 minutos se genera un nuevo bloque en la Blockchain de Bitcoin. El proceso de generación o minado de cada bloque tiene sus propias características.
La minería es el mecanismo fundamental que habilita el consenso descentralizado, a través de cuatro pilares:
Validar un bloque mediante el algoritmo de proof-of-work requiere poder de cómputo para la obtención de un hash con determinadas características. El mismo se realiza encriptando el encabezado de un bloque que se construye con la siguiente información:
La información de todo el encabezado se encripta a través de una función de encriptado “SHA256” en dos oportunidades con un número aleatorio llamado nonce. El resultado es un valor único y representativo del bloque que depende del target de dificultad.
Encontrar el nonce no es tarea fácil para los mineros, debe ser un número tal que produzca un hash con N cantidad de ceros a la izquierda para lograr validar un bloque.
Por ejemplo: 0x0000000000123456798
. La cantidad de ceros, o sea, la dificultad es determinada por la cantidad de cómputo intentando localizar este número. A más cómputo tenga la red, más ceros requiere el hash y más difícil se vuelve la tarea.
Los mineros reciben una comisión por minar el bloque y dicha comisión lleva el nombre de “Coinbase Transaction”. La misma es la primera de todo bloque e incluye toda la información relevante para que un minero reclame su recompensa.
Existen dos tipos de recompensas:
Tarifas totales = Suma(salidas) - Suma(entradas)
Entradas y salidas
El concepto de entradas y salidas, o inputs y outputs, es el mecanismo que permite agrupar fracciones de bitcoins para realizar un solo pago. Es una de las partes más importantes de las transacciones y es lo que permite que Bitcoin sea tan eficiente para el intercambio de valor entre dos partes.
El protocolo de Bitcoin implementa políticas que no son aplicadas directamente en el consenso, pero lo hacen más eficaz. Son un conjunto de reglas de validación que se aplican adicionalmente al consenso sobre transacciones no confirmadas que se almacenan en el Mempool. Permiten verificar transacciones antes de ser agregadas a un nuevo bloque sin afectar a las transacciones ya confirmadas.
El mecanismo de transacciones y minado de bloques de la Blockchain de Bitcoin explica por qué este se convierte en un excelente sistema de pagos. Es una obra de ingeniería de software admirable.
Contribución creada por: Luis Enrique Herrera y Kevin Fiorentino (Platzi Contributor).
Aportes 12
Preguntas 3
Minando un bloque.
La minería es el mecanismo fundamental que habilita un consenso descentralizado a través de cuatro pilares fundamentales.
.
.
Políticas.
.
Coinbase Transcation.
.
Recompensas y Fees.
.
Estructura Coinbase Transaction Input.
Campo | Descripción | Tamaño (bytes) |
---|---|---|
Transaction Hash | Todos sus bits son cero, no tiene referencia a un hash de transacción. | 32 |
Output index | Todos los bit son unos: 0xFFFFFFFF | 4 |
Coinbase Data Size | Longitud de la información, de 2 a 100 bytes. | 1-9 bytes |
Coinbase Data | Información usada para un nonce extra y etiquetas de minería. | Variable |
Sequence number | 0xFFFF | 4 |
.
Estructura Transaction Input.
Campo | Descripción | Tamaño (bytes) |
---|---|---|
Transaction Hash | Referente a la transacción que contiene la UTXO a usarse. | 32 |
Output index | El índice de la UTXO. | 4 |
Unlocking-Script Size | Longitud del script, de 2 a 100 bytes. | 1-9 bytes |
Unlocking-Script | Script que satisface con las condiciones del script que bloquea la UTXO. | Variable |
Sequence number | 0xFFFF | 4 |
.
Construyendo el encabezado.
.
Minando un bloque.
Video de apoyo
En realidad las tarifas totales son la diferencia entre la suma de salidas y la suma de las entradas. El exceso es lo que es recolectado por los mineros:
fees = Sum(Inputs) - Sum(outputs)
Lean Mastering Bitcoin, porque de verdad que este profesor está de… u.u
RESUMEN CLASE 7:
MINANDO UN BLOQUE
I.- MINERIA Y SUS 4 PILARES
Validación independiente de transacciones.
Agregación independiente de transacciones en nuevos bloques.
Verificación de nuevos bloques.
Selección independiente de la cadena con más computación acumulada.
II.- POLITICAS
Conjunto de reglas de validación que se aplican adicional al consenso sobre transacciones no confirmadas
No afecta las transacciones en bloques.
Uso de recursos, heurísticas, reglas
III.- COINBASE TRANSACTION
Transacción especial que contiene la recompensa por el proceso de minado.
Solo tiene un input y un output.
IV.- RECOMPENSAS Y FEES
Existen 2 tipos de recompensas:
Añadir un nuevo bloque a la cadena principal
Sumando las tarifas(fees) de las transacciones añadidas en el bloque
V.- ESTRUCTURA COINBASE TRANSACTION INPUT
VI.- ESTRUCTURA TRANSACTION INPUT
VI.- CONSTRUYENDO EL ENCABEZADO
Version
Previous block hash
Merkle Tree
Timestamp
Target
Nonce
VIII.- MINANDO UN BLOQUE
Pasar la cabecera de un bloque a través de una función de hashing hasta encontrar un valor válido.
Proof-of-work:
SHA 256.
Producir una salida que sea igual o menor que el objetivo.
Objetivo alto, menor dificultad.
Objetivo bajo, mayor dificultad.
¿Cuántos de los bits iniciales deben ser cero?
En esta página podemos ver como la dificultad de la red de BTC aumenta en función del hasrate de la misma red
https://studio.glassnode.com/metrics?a=BTC&category=Miners&m=mining.DifficultyLatest
Minuto 1:20 “SOLO TIENE UNA SALIDA”, pero el dice solo tiene una entrada
Correccion solo tiene una salida
Aqui el script de prueba de trabajo, no estaba el link en recursos
https://github.com/bitcoinbook/bitcoinbook/blob/develop/code/proof-of-work-example.py
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?