Lección 13: Blockchain Flashcards
¿Qué es bitcoin?
- Bitcoin es una criptomoneda: Fragmento de código que representa la propiedad de un concepto digital.
- Bitcoin es un protocolo de blockchain (red P2P distribuida que mantiene un registro de saldos de Bitcoin).
- Seguridad basada en criptografía y mecanismo de consenso (PoW)
Beneficios de Bitcoin
- Descentralizado: ninguna entidad controla la red
- Suministro limitado: controlado por el algoritmo
- Pseudo-anónimo: usuarios identificados por direcciones
- Inmutable: las transacciones no pueden ser revertidas
- Divisible: la unidad mínima es un satoshi (8º decimal)
¿De que se compone Bitcoin?
- Bitcoin protocol: red P2P descentralizada
- Blockchain: registro público de transacciones.
- Reglas de consenso: reglas de emisión y transmisión
- Proof of Work: mecanismo de consenso global.
Direcciones y claves
- Dirección proporciona identidad pseudoanónima única.
- Basadas en criptografía asimétrica (clave pública y privada).
- Clave privada (número aleatorio, se usan para firmar las transacciones.)
- Clave pública: derivadas de la clave privada.
- Dirección bitcoin: derivada de clave pública, caracteres alfanuméricos (siempre empieza por 1).
Creando y verificando direcciones
- Dada la clave pública, cualquiera puede verificar si la dirección corresponde a la clave pública.
- Símil dirección - cuenta bancaria.
- La clase privada es la que permite desbloquear la cuenta para poder hacer transacciones desde esa dirección.
- Se puede regenerar la clave pública a partir de la privada.
- Sin la clave privada es imposible transferir dinero.
Wallets
• Se utilizan para almacenar todas las nuestras claves (y direcciones).
• Se almacenan utilizando un cifrado simétrico con clave secreta.
• Contienen nuestro dinero actual (transacciones sin gastar de cuyas
direcciones tenemos la clave privada).
Tipos de wallets
• No-deterministas: todas las claves privadas son generadas de forma aleatoria
• Deterministas: una clave privada aleatoria, el resto de claves son derivadas
- Web wallets (de custodia): se accede a través del navegador, son guardadas por una tercera parte.
- Software wallets (extensión en el navegador): el software y las claves privadas están en el equipo del cliente.
- Hardware wallets: las claves privadas se guardan en un dispositivo físico seguro.
- Cold wallets: las claves nunca han sido conectadas a ninguna red (ej. en papel).
Transacción de Bitcoin
- Una transacción es un intercambio de Bitcoins entre direcciones.
- No hay concepto de “balance por cuenta” (sólo transacciones, lo que implica que hay que enviarse el dinero sobrante de la transacción a una cuenta propia).
Modelo UTXO (Unspent Transaction Output)
- Inputs:
- Una o más “salidas sin gastar” (UTXOs) de transacciones anteriores.
- Sin gastar es que no se ha utilizado como entrada de otra transacción.
• Outputs:
• El destino de la transacción son direcciones de destino.
• Si se quiere transferir “menos dinero”, al menos habrá 2 salidas,
destinatario(s) y dirección de cambio.
Comisión de transacción
• En teoría, las transacciones son procesadas de forma gratuita.
- Las comisiones de transacción no aparecen.
• No obstante, los usuarios pueden ofrecer una “recompensa” a los
mineros por validar su transacción.
• La comisión de transacción es la diferencia entre la suma los inputs
y los outputs (fees = inputs – outputs).
• Los mineros suelen priorizan transacciones en base a su comisión.
Prueba de “propiedad” de transacción
• La “prueba” se basa en firma digital. Se envía la transacción junto con
la firma digital para cada una de las entradas (si tienen direcciones
distintas).
• La firma incluye la clave pública de la dirección a la que pertenece.
Verificación de una transacción
- La clave pública corresponde con la
dirección, repitiendo el proceso sobre la
clave pública que genera una dirección
unívoca. - La clave pública permite verificar la
firma, si permite verificarla el firmante
es dueño de la transacción anterior.
Seguridad de la verificación
• La transacción contiene toda la información necesaria para su
verificación (no se necesita un certification authority)
- Nunca se comparten las claves privadas.
Cadena de bloques
• Cada bloque contiene un conjunto de transacciones.
• Cada bloque está ligado al bloque anterior.
• El primer bloque se denomina “génesis” y se crea manualmente.
• Se pueden añadir bloques a la cadena, pero no se pueden eliminar ni
modificar bloques existentes.
• Los bloques están ligados mediante mecanismos de criptografía de
forma que cualquiera pueda comprobar la veracidad de la cadena.
Estructura de un bloque de Bitcoin
- Cabecera del bloque (80 bytes) • Versión (4 bytes) • Hash del bloque anterior (32 bytes) • Merkle root (32 bytes) • Timestamp (4 bytes) • Dificultad (4 bytes) • Nonce (4 bytes)
- Transacciones (variable)
Identificadores de bloque
• Hash de la cabecera del bloque: Hash SHA256 único generado
para cada bloque.
• Altura de bloque: Posición que ocupa el bloque en
la cadena.
Merkle Tree
- Almacena un resumen de todas las transacciones en el bloque.
- La cabecera del bloque incluye un Merkle Tree del bloque.
- Las hojas del árbol son las hashes de las transacciones.
- Los padres consisten en el hash de los hijos.
- Se utiliza para pruebas de integridad y de pertenencia del bloque
Bitcoin – Tipos de nodos
- Completos
- Ligeros
- Mineros
Nodos completos (full node)
- Tienen almacenada toda la cadena de bloques de Bitcoin.
- Cada vez que se “confirma” un nuevo bloque en la red, lo almacenan.
- Pueden verificar de forma segura cualquier transacción o bloque.
Nodos ligeros (lightweight wallet)
- Pueden verificar transacciones utilizando SPV (Simplified Payment Verification).
- Almacenan las claves de usuario y sus transacciones.
Mineros (miners)
- Únicamente realizan el “Proof of Work” de los bloques.
* Necesitan un “full node” para validar el bloque.
Simplified Payment Verification (SPV)
• Método para verificar si transacciones han sido incluidas en un
bloque utilizando sólo su cabecera.
• No hace falta descargarse el bloque entero.
• Una prueba de inclusión sólo necesita:
• Merkle Root del bloque (Merkle Tree de las transacciones del bloque)
• Hashes entre la transacción y la raíz (“sibling hashes”)
Ciclo de vida de una transacción
- El cliente envía la transacción a la red para que la distribuya.
- Los nodos mineros reciben transacciones:
a. Verifican las transacciones.
b. Añaden las transacciones al “memory pool”. - Los nodos mineros comienzan a “minar”:
a. Validan transacciones y forman un bloque.
b. Intentan resolver la “prueba de trabajo” (Proof-of-Work). - Se mina un bloque y se redistribuye en la red (pueden ser varios bloques minados):
a. Los Full-Nodes reciben y verifican el bloque nuevo.
b. Si el bloque es correcto, lo almacenan y lo aceptan en su cadena de bloques.
¿Qué es el minado?
• Proceso de “hashear” repetidas veces un bloque,
• cambiando un parámetro del bloque,
• hasta conseguir hash final con un valor o patrón objetivo.
• El hash final sólo puede ser generado mediante fuerza bruta
cambiando parámetros dentro del bloque.
• Los hashes finales no pueden ser determinados con antelación.
Proof of Work (PoW)
• Bitcoin usa el algoritmo de minado “hashcash”.
• Es un proceso de creación de bloques basado en la resolución de
un problema matemático computacionalmente intensivo.
• Tiene 2 objetivos:
1. Emisión de moneda (BTC)
2. Confirmación de bloques sólo cuando se le haya dedicado suficiente
potencia computacional (mecanismo de consenso).
¿Cómo funciona PoW en Bitcoin?
• Calcular un número (“nonce”) tal que hash final de la cabecera
del bloque tiene X número de ceros al principio (dificultad).
• El bloque incluye además una transacción de minado (“coinbase”)
con la recompensa del minero.
• El número (nonce) necesario es diferente para cada “minero”.
• Es muy complicado de resolver, pero muy sencillo de verificar
Proof of Work: Dificultad
Cada bloque suele tener unas 2.000 transacciones.
• La dificultad del ”Proof of Work” se ajusta constantemente.
• El objetivo es que de media sean necesarios unos 10 minutos
para que algún minero resuelva el siguiente bloque.
• La dificultad se ajusta cada 2 semanas
Los mineros
• Fundamentales en el mecanismo de consenso de Bitcoin (PoW).
• Cualquiera puede crear un nodo “minero”
- Reciben recompensa en forma de bitcoin.
Emisión de moneda
• Cada vez que se “mina” un bloque sea crean nuevos Bitcoins (BTC).
• La cantidad viene dada por un algoritmo y se reduce a la mitad con
el tiempo (“halving”).
• Llegados a 21 millones de Bitcoins (BTC) ya no se generará dinero
nuevo.
• Posteriormente, los mineros únicamente ganarán dinero con
“transaction fees”
Bitcoin Fork
• Las cadenas de bloques generan ”forks”, formando un árbol de bloques.
• En algún momento hay que desechar ramas del árbol para que todos los
nodos de la red sigan la misma cadena de bloques.
Dificultad del “double spending”
• Para realizar este ataque la potencia computacional necesaria es
“enorme” y por tanto el coste es prácticamente inviable.
El mecanismo de consenso de blockchain por “proof of stake” mueve el trabajo de confirmación de los nodos servidores a los nodos cliente. Un cliente aleatorio de entre los que tienen mas “colateral” debe realizar la confirmación, utilizando sus propios fondos como garantía.
Seleccione una:
Verdadero
Falso
Verdadero
La dificultad del proof of work en bitcoin se ajusta automáticamente para que de media se necesiten unos 10 minutos para obtener un nuevo bloque. La dificultad se ajusta cambiando el numero de ceros que se necesitan como resultado de la función hash del “proof of work”
Seleccione una:
Verdadero
Falso
Verdadero
En una transacción de Bitcoin las entradas sin gastar de las transacciones anteriores se deben consumir enteras. Si no queremos transferir todo el dinero, el dinero no indicado en la transacción se vuelve a asignar a nosotros.
Seleccione una:
Verdadero
Falso
Falso
¿Por que utilizaríamos “proof of stake” como mecanismo de consenso en lugar de un “proof of work”?
Seleccione una o más de una:
a. Evita la necesidad de tener nodos mineros especializados para realizar el trabajo
b. Al igual que proof of work, es totalmente distribuido y no requiere de nodos centralizados
c. Requiere mucho menor trabajo computacional
d. La confianza está basada en el “colateral”, quien realiza la confirmación le interesa no hacer trampa para evitar perder el dinero
a. Evita la necesidad de tener nodos mineros especializados para realizar el trabajo
b. Al igual que proof of work, es totalmente distribuido y no requiere de nodos centralizados
c. Requiere mucho menor trabajo computacional
d. La confianza está basada en el “colateral”, quien realiza la confirmación le interesa no hacer trampa para evitar perder el dinero
Un “Smart Contract” es un código de programación que se almacena y ejecuta dentro del Blockchain, almacenando su estado y código en el mismo y representando un flujo de negocio.
Seleccione una:
Verdadero
Falso
Verdadero
Una cripto-moneda no es mas que un caso particular de un Smart Contract, pero estos últimos pueden representar flujos de negocio mucho mas complejos
Seleccione una:
Verdadero
Falso
Verdadero
La “dirección” en Bitcoin se consigue creando un par de claves Pública/Privada y aplicando una función Hash a la clave privada seguida de una codificación a texto Base58 para lograr una cadena de texto.
Seleccione una:
Verdadero
Falso
Falso
Para verificar una transacción en bitcoin debemos…
Seleccione una o más de una:
a. Comprobar que la dirección de destino existe
b. Comprobar que las entradas de la transacción están sin gastar y pertenecen a transacciones anteriores que existen en el blockchain
c. Comprobar que la clave pública corresponde con la dirección de origen de la transacción
d. Comprobar que la firma de la transacción se verifica contra la la clave pública
b. Comprobar que las entradas de la transacción están sin gastar y pertenecen a transacciones anteriores que existen en el blockchain
c. Comprobar que la clave pública corresponde con la dirección de origen de la transacción
d. Comprobar que la firma de la transacción se verifica contra la la clave pública
El resultado de ejecución de un SmartContract debe ser determinista, de forma que todos los nodos que lo ejecuten obtengan el mismo resultado. Si no fuera así sería imposible que cualquier nodo pudiera validar una transacción sobre un contrato
Seleccione una:
Verdadero
Falso
Verdadero
El resultado de ejecución de un SmartContract debe ser determinista, de forma que todos los nodos que lo ejecuten obtengan el mismo resultado. Si no fuera así sería imposible que cualquier nodo pudiera validar una transacción sobre un contrato
Seleccione una:
Verdadero
Falso
Verdadero
Los bloques en blockchain no pueden ser modificados ya que contienen un hash de toda la información del bloque y además están firmados. Si se modificara cualquier valor alteraría el hash firmado con lo que sería fácilmente detectable.
Seleccione una:
Verdadero
Falso
Verdadero
De los siguientes pasos, ¿cuales pertenecen al ciclo de vida de una transacción en Bitcoin?
Seleccione una o más de una:
a. Guardado del nuevo bloque minado en el blockchain
b. Minado del bloque y obtención del “proof of work”
c. Envío del bloque minado a la red y confirmación por parte de los “full nodes”
d. Confirmación del nuevo bloque por parte del nodo central validador de la red
e. Confirmación de los clientes del grupo de transacciones del bloque
f. Verificación de la transacción por parte de los nodos mineros (apoyados o no en Full node)
g. Envío de la transacción firmada a la red de bitcoin
h. Creación de un bloque de transacciones por parte de los mineros
b. Minado del bloque y obtención del “proof of work”
c. Envío del bloque minado a la red y confirmación por parte de los “full nodes”
f. Verificación de la transacción por parte de los nodos mineros (apoyados o no en Full node)
g. Envío de la transacción firmada a la red de bitcoin
h. Creación de un bloque de transacciones por parte de los mineros
En Bitcoin el mecanismo de “proof of work” se utiliza para conseguir “consenso” entre los nodos de la red para poder confirmar las transacciones. Se hace de forma compartida, todos los nodos realizan parte del trabajo y comparten los resultados que finalmente dan lugar al “proof of work final”.
Seleccione una:
Verdadero
Falso
Falso
Algunos sistemas de blockchain con Smart Contracts utilizan un mecanismo de pago por ejecución con dos fines:
- Evitar ejecuciones infinitas que pudieran poner en peligro a la red.
- Costear el mayor coste computacional de ejecutar contratos mas complejos.
Seleccione una:
Verdadero
Falso
Verdadero
¿Por qué es tan importante el Blockchain respecto a los mecanismos de auditoría y regulación financiera?
Seleccione una o más de una:
a. Los auditores pueden tener toda la cadena del blockchain en tiempo real por lo que no necesitan pedir información para poder hacer una auditoría continua
b. Al ser el blockchain “público” los reguladores pueden acceder directamente a el para comprobar las transacciones
c. Las reglas de funcionamiento del blockchain son fijas en sus algoritmos y la criptografía permite detectar con facilidad si alguien está intentando “hacer trampa”
d. La naturaleza de blockchain hace que sea inmutable y contenga todas las transacciones desde que se creó, esto asegura a los auditores que la información que tienen es “cierta”
a. Los auditores pueden tener toda la cadena del blockchain en tiempo real por lo que no necesitan pedir información para poder hacer una auditoría continua
b. Al ser el blockchain “público” los reguladores pueden acceder directamente a el para comprobar las transacciones
c. Las reglas de funcionamiento del blockchain son fijas en sus algoritmos y la criptografía permite detectar con facilidad si alguien está intentando “hacer trampa”
d. La naturaleza de blockchain hace que sea inmutable y contenga todas las transacciones desde que se creó, esto asegura a los auditores que la información que tienen es “cierta”
El proceso de minado en Bitcoin es necesario pero muy costoso. ¿Cómo se compensa a los mineros por su trabajo?
Seleccione una o más de una:
a. Un minero que genere un bloque, aunque no pertenezca finalmente a la cadena recibe una compensación ya que este bloque contribuye a la seguridad total de la cadena.
b. Todos los mineros reciben una compensación por su trabajo computacional en el proceso de minado.
c. El minero se quedan con los “transaction fee” de todas las transacciones que pertenecen al bloque que han minado.
d. El minero se queda con el dinero nuevo que se genera debido al minado de un bloque, este valor cada vez es menor en Bitcoin.
c. El minero se quedan con los “transaction fee” de todas las transacciones que pertenecen al bloque que han minado.
d. El minero se queda con el dinero nuevo que se genera debido al minado de un bloque, este valor cada vez es menor en Bitcoin.
Para hacer trampas en bitcoin y lograr un “double spend” temporal necesitaríamos ser capaces de crear nuevos bloques mas deprisa que el resto de la red, de forma que podamos generar un “fork” con una cadena mas larga que la “oficial”.
Seleccione una:
Verdadero
Falso
Verdadero
Si perdemos nuestras claves en Bitcoin podemos dar nuestras credenciales a un nodo validador central para recuperarlas.
Seleccione una:
Verdadero
Falso
Falso
Para realizar una transacción en bitcoin desde una “dirección” necesitamos…
Seleccione una o más de una:
a. Transferencias anteriores a esa dirección con salidas “sin gastar”
b. Una dirección de destino
c. Consumir todas las salidas sin gastar que formen parte de la transacción de forma completa
d. Enviar la transacción firmada a la red
e. La clave privada de la dirección para poder firmar la transacción
a. Transferencias anteriores a esa dirección con salidas “sin gastar”
b. Una dirección de destino
c. Consumir todas las salidas sin gastar que formen parte de la transacción de forma completa
d. Enviar la transacción firmada a la red
e. La clave privada de la dirección para poder firmar la transacción
¿De que está compuesto el sistema de moneda digital “bitcoin”? Selecciona las correctas.
Seleccione una o más de una:
a. Un blockchain público para almacenar transacciones
b. Un sistema de moneda basado en algoritmos matemáticos y criptografía
c. Un ente regulador que vela por el buen funcionamiento de la red
d. Un mecanismo distribuido para verificar transacciones y bloques
e. Un red de comunicación descentralizada punto a punto.
f. Un mecanismo de intercambio de bitcoin por dinero “real”
a. Un blockchain público para almacenar transacciones
b. Un sistema de moneda basado en algoritmos matemáticos y criptografía
d. Un mecanismo distribuido para verificar transacciones y bloques
e. Un red de comunicación descentralizada punto a punto.
En que casos utilizaríamos un blockchain “privado” y que ventajas tiene respecto a uno “público”
Seleccione una o más de una:
a. Es posible introducir mecanismos de seguridad adicionales y controlar el acceso a la red
b. Es mucho mas sencillo introducir cambios o corregir bugs ya que podemos modificar todos los nodos de la red a la vez
c. Se suele utilizar con un grupo reducido de participantes y nodos controlados para intentar resolver un flujo de negocio de forma mas sencilla y descentralizada.
d. Tiempos de validación y confirmación mucho mas cortos
e. Menor coste de infraestructura y computación respecto a un público al contar con un menor número de nodos
a. Es posible introducir mecanismos de seguridad adicionales y controlar el acceso a la red
b. Es mucho mas sencillo introducir cambios o corregir bugs ya que podemos modificar todos los nodos de la red a la vez
c. Se suele utilizar con un grupo reducido de participantes y nodos controlados para intentar resolver un flujo de negocio de forma mas sencilla y descentralizada.
d. Tiempos de validación y confirmación mucho mas cortos
e. Menor coste de infraestructura y computación respecto a un público al contar con un menor número de nodos
Una transacción en un Blockchain con Smart Contracts no es mas que una llamada a un “método” del contrato con unos parámetros específicos.
Seleccione una:
Verdadero
Falso
Verdadero
El mecanismo de proof of work en Ethereum está pensado para que el utilizar hardware específico no ofrezca ninguna ventaja competitiva respecto a sistemas de computación tradicionales. Esto reduce los costes del minado y evita que se creen granjas de mineros especializadas.
Seleccione una:
Verdadero
Falso
Verdadero
Cuando se ejecuta una transacción en un Smart Contract, el cliente realiza la ejecución del contrato y manda el resultado a la red para que sea confirmado.
Seleccione una:
Verdadero
Falso
Falso
¿Cuales de las siguientes afirmaciones son ciertas cuando hablamos de un “fork” en bitcoin?
Seleccione una o más de una:
a. Tras un par de bloques confirmados podemos asumir que si hay un fork este ya ha sido resuelto
b. Produce una partición en la red, donde parte de los nodos tienen una cadena de bloques válida y parte otra
c. Una transacción se puede revertir si únicamente pertenece a un bloque de una cadena que se ha descartado debido a un fork
d. Se soluciona con el tiempo ya que siempre se descarta la cadena de bloques mas “corta”
e. Se producen cuando mas de un “minero” encuentra la solución al “proof of work” en un tiempo similar, de forma que la red tiene dos bloques válidos distintos.
b. Produce una partición en la red, donde parte de los nodos tienen una cadena de bloques válida y parte otra
c. Una transacción se puede revertir si únicamente pertenece a un bloque de una cadena que se ha descartado debido a un fork
d. Se soluciona con el tiempo ya que siempre se descarta la cadena de bloques mas “corta”
e. Se producen cuando mas de un “minero” encuentra la solución al “proof of work” en un tiempo similar, de forma que la red tiene dos bloques válidos distintos.