-
El doble gasto: Cuando alguien envía la misma “moneda” dos veces.
-
EJEMPLO
-
Digamos que Sarah les debe a Bill y a Tom 0.2 BTC, pero tiene exactamente 0.2 BTC en su billetera. Ella crea dos transacciones simultáneas en las cuales le manda 0.2 BTC a Bill y también 0.2 BTC a Tom. Es como si hubiera escrito un correo electrónico en el que declara su amor y se lo hubiese mandado simultáneamente a dos personas.
-
¡Las dos transacciones no van a ser confirmadas por la red! Eso sería un ejemplo de un doble gasto. Pero si tenemos un sistema en el que ningún computador está a cargo, ¿cómo se hace para decidir cuál transacción se rechaza y cuál queda escrita permanentemente en la cadena? Bitcoin usa un proceso llamado minería.
Antes de entrar en detalle, contemplemos lo siguiente:
Bitcoin es dinero digital. Esto significa que a diferencia del dinero convencional,
-
No puede duplicarse como otro tipo de archivos digitales (fotos, videos, etc.),
-
replicado ,falsificado y/o enviado a múltiples personas simultáneamente,
-
o facturado como un cobro doble a través de una tarjeta de crédito.
Que beneficios trae esta característica de bitcoin? Expliquemos con un ejemplo.
-
Es común que las personas almacenen sus recibos y/o mantengan un registro de sus gastos
-
Periódicamente comparan sus cuentas con los saldos bancarios
-
y verifican que no haya ninguna discrepancia de gastos.
Por ejemplo:
-
Alguien puede darse cuenta que un restaurante cobró su tarjeta de crédito dos veces;
-
Hay dos retiros de $5.08 el 01/26/22. Le han facturado doble por el mismo almuerzo
-
Probablemente va o llama al banco para tratar de revertir uno de los pagos,
-
En el mejor caso, si el banco acepta su disputa, recuperará su dinero en unos meses.
-
En el peor, el restaurante se opone a devolver el dinero alegando que hubo 2 compras.
Sigamos explorando ejemplos del día a día para ilustrar la idea del “doble gasto”
Día #1:
-
Digamos que Raquel pide un almuerzo en McDonalds por 10 USD.
-
Paga en efectivo con dos billetes de 5 USD.
-
El pago queda confirmado instantáneamente
-
ambas partes han presenciado físicamente el trámite
-
y ha sido un intercambio sencillo.
-
Simple, una hamburguesa a cambio del dinero.
Día #2:
-
Raquel pide el mismo almuerzo y tiene dos billetes de 5 USD de nuevo,
-
pero uno es original y otro falso (una copia exacta). Los entrega como forma de pago.
-
Siendo los números de serie idénticos:
-
el cajero fácilmente podría ver que uno es falso,
-
o simplemente aceptarle el pago como el día anterior.
-
El cajero, estando en una jornada ajetreada, acepta el pago sin mirar los billetes
Día #3 (Raquel estuvo de buenas, pero le da miedo volver a McDonalds)
-
Ahora, va a tratar de replicar su bitcoin como replicó su billete en McDonalds.
-
Ella le debe 0.2BTC tanto a Jaime como a Pepe, pero sólo tiene 0.2 BTC en su monedero.
-
Raquel abre su monedero en su teléfono y en el de su mamá con su frase semilla.
-
Desde su teléfono manda 0.2 BTC a Jaime
-
Desde el teléfono su mamá manda 0.2 BTC a Pepe
-
Se asegura de mandar las dos transacciones exactamente al mismo tiempo.
-
Dos nodos diferentes reciben las dos transacciones
-
Recordemos que Raquel tenía sólo 0.2 BTC en su monedero para gastar.
-
¡Los nodos de la red se dan cuenta y una de las dos transacciones se rechaza!
-
Pero cómo? Si tenemos un sistema en el que ningún computador está a cargo, ¿cómo se hace para decidir cuál transacción se rechaza y cuál queda escrita inalteradamente en la cadena de bloques?
-
Para lograr esto, Satoshi Nakamoto logró encontrar un mecanismo exitoso que :
-
revisa si una transacción es válida o no,
-
de manera consensuada entre todos los participantes en la red,
-
antes de agregarla en la cadena de bloques
-
Una solución ingeniosa a problemas como los mencionados anteriormente
Cómo funciona?
-
Antes de que cualquier transacción se pueda ejecutar y fijar en un bloque,
-
entrará a un área de espera llamada “mempool” (grupo de memoria).
¿Qué es y que sucede con las transacciones que entran aquí?
-
Un sitio donde existen miles de transacciones verificadas pero no confirmadas
-
No existe una Mempool global; cada uno de los nodos debe:
-
verificar la validez de las transacciones antes de incluirlas en su Mempool
-
propagar transacciones verificadas a los nodos vecinos
-
rechazar transacciones inválidas
Aquí https://dailyblockchain.github.io/ se puede observar cómo se dispersan rápidamente las transacciones válidas de nodo a nodo.
-
Los nodos deben decidir si las transacciones son válidas o no
-
Si son aceptadas,
-
esperan que un minero la seleccione y las adicione en el siguiente bloque
-
eventualmente se graban permanentemente en la base de datos compartida,
-
De lo contrario, se pueden rechazar si :
-
existe un conflicto con otra transacción,
-
si no hay suficientes fondos para transferir o
-
si la firma no es válida y no puede comprobar que se puede gastar dicho BTC,
-
Algunas transacciones simplemente se quedan en el área de espera
-
por hasta 72 horas, hasta que por fin se rechazan
-
ya que no agregan un incentivo monetario suficientemente atractivo
La mempool proporciona una capa adicional de seguridad y resistencia contra ataques DDoS.
-
cuando una red se inunda con transacciones minúsculas,
-
provocando una congestión inmanejable.
A continuación podemos ver una transacción real sin confirmar:
-
Un identificador único ( la huella digital de la transacción),
-
el espacio de memoria que ocupa,
-
la comisión que se paga
-
el monto de la transferencia
TxID: a434948b2de9de18398294f84e42436ec59fb86faf34a21052bd640a97cd94b7d ___input ⟶. ___outputs Size: _____ vbytes (Espacio de memoria que ocupa) Fee rate: 27.01 sats/vbyte (Rata de Comisión/ vbyte actual) Fee: ______sats (Comisión de la transacción) Total value: ₿ _______ ≈ $ ______USD (Valor total de la transacción)
Podríamos analizar otra u otras transacciones?
-
Es de mayor o menor monto?
-
Los participantes pagaron una comisión más alta o más baja?
-
Cual transacción será más probable encontrar en el siguiente bloque? Porqué?
-
Qué querrá decir cuando un bloque se cae hacia el abismo?
-
Que quiere decir cuando se confirma una transacción?…. Próxima clase
-
Está compuesta por los nodos de Bitcoin…
-
Aquellos equipos computacionales que se adhieren a un sistema de reglas (Bitcoin Core).
-
Se comunican entre sí a través del ciberespacio convirtiéndolos en una red.
-
Cada uno de los cuales ejecuta su propia versión del software Bitcoin.
Desde estos puntos de conexión se puede crear, enviar, y recibir información (i.e. transacciones)
-
Existen diferentes tipos de nodos; cada uno ejerce un papel diferente en la red
-
Ejecutan el software de bitcoin
Tienen autonomía de tomar sus propias decisiones, sin embargo, a través del consenso,
-
toman las mismas decisiones, convirtiéndolos en una red descentralizada confiable y segura
-
Los nodos completos tienen tres funciones:
-
Compartir información (a sus nodos vecinos)
-
-
❏ Hay dos tipos de transacciones que comparten los nodos:
-
Transacciones frescas:
-
-
Estas van directamente a la mempool.
-
Los nodos se encargan de verificar o rechazar estas transacciones.
-
Se basan en el historial de la blockchain y el conjunto de reglas del software
-
Retransmiten las transacciones válidas a sus nodos vecinos
-
Nadie quiere recibir transacciones defectuosas o maliciosas
-
Transacciones confirmadas:
-
-
transacciones que han sido "confirmadas" y escritas en un bloque.
-
Estas se agrupan y forman los bloques; no se comparten individualmente.
-
Guardar una copia de las transacciones confirmadas.
-
-
Mantienen una copia completa de todos los bloques en la cadena de bloque,
-
Cada confirmación reduce exponencialmente *e*l riesgo de que la transacción sea revertida .
https://mempool.space/ (Los bloques morados -debajo están todas las transacciones)
-
Validar los bloques y llegar a un consenso con los otros nodos.
-
Todos los nodos participantes deben aceptar unánimemente la información que contiene un bloque entero antes de incluirlo en la cadena de bloques.
-
Una copia de la cadena de bloques para su custodia y la comparte con otros nodos.
-
El estatus de sus transacciones frescas y confirmadas se pueden localizar en la red. Cómo ?
-
Los exploradores de bloques son una ventana a todas las transacciones cadena de bloques
-
Permiten comprobar el saldo de cada dirección, ver los detalles de cada transacción y más
Actividad:
Exploremos uno de ellos:
Vamos al link de Bitcoin donde podemos observar:
-
el monto total que se transmite,
-
cuantas entradas y salidas hay
-
el tamaño (o la memoria que ocupa en el bloque),
-
el ID de una transacción aleatoria
-
el estado de la transacción y,
-
si la transacción ya ha sido confirmada, muestra el número total de confirmaciones.
-Latest Transactions= Últimas Transacciones
-Latest Blocks=Últimos Bloques
Qué información reconoces? Cual te sorprende? Cuál es el valor de la última transacción? Podemos ver si ya está confirmada?
-
no todos los usuarios tienen suficiente espacio en su disco duro para convertirse en uno
-
de ser ese el caso, simplemente se puede descargar un monedero
-
y realizar transferencias o guardar BTC a largo plazo
Software original creado por Satoshi Nakamoto-
-
Diseñado para conectarse a otras personas que ejecutan el mismo programa,
-
creando una red de computadoras que se comunican entre sí.
-
Su propósito es que al descargarlo, todos trabajen con el mismo conjunto de reglas
-
para validar transacciones
-
y contribuir con la seguridad y la descentralización del sistema
-
Quien lo ejecute, puede instalarlo como cualquier otro programa de computador
-
descarga y crea una copia adicional de la cadena entera de bloques,
-
puede ayudar a transmitir transacciones a otras computadoras.
-
Siempre y cuando haya acceso a internet, no se necesita ningún permiso para:
-
descargarlo y/o utilizarlo libremente
-
transferir bitcoin a otro monedero o recibir de alguien más,
-
verificar de forma demostrable la emisión de la oferta,
-
conocer el historial de transacciones y los propietarios de cada bitcoin.
💡 Código fuente abierto: Cualquier persona puede ver, proponer cambios, modificar y distribuir como mejor le parezca. Es comparable a ir a un restaurante y tener acceso a las recetas de tus comidas favoritas (el código)… pero luego puedes hacerlas y agregar o quitar cualquier ingrediente que desees y perfeccionarlas.
-
Decenas de expertos en software y criptografía, trabajan en su mantenimiento y mejora.
-
Quien propone una actualización en el software,
-
requiere el consenso de la mayoría de los para implementarla
¿Qué haces con una carretera segura pero congestionada? Simple: conectas una carretera para descargar el tráfico. Esta es exactamente la diferencia entre las redes blockchain de Capa 1 y Capa 2.
-
Muchas piezas tecnológicas importantes de Bitcoin e incluso muchas transacciones no ocurren dentro de la "cadena de bloques"
-
Bitcoin es revolucionario ya que es la capa base del internet descentralizado, pero,
-
tiene un problema fundamental de escalabilidad.
-
Las transacciones de Bitcoin pueden ser lentas y caras.
-
Se argumenta que bitcoin no se puede usar como medio de pago
-
por ser lento y caro en micro pagos.
-
Existen transacciones de US$1 o US$2 que terminan costando más de US$5 cuando se usa la red principal.
-
Visa procesa hasta 65.000 transacciones por segundo,
-
mientras que la red Bitcoin solo puede manejar 7 tps.
Ahí es donde la magia de las soluciones de capa dos, como Lightning, ha venido al rescate.
-
Con Lightning Network, Bitcoin tiene el potencial de ser la moneda de la era digital…
-
rápida, inmutable y descentralizada.
-
Lightning, es un conjunto de reglas (contratos inteligentes), construido encima de Bitcoin,
-
que permite transacciones instantáneas,
-
de alto volumen y
-
desconectadas de la red principal.
-
No es necesario registrar todas las transacciones en la red,
-
sino en una red alterna más eficiente.
-
Brinda toda la seguridad de Bitcoin sin algunos de sus inconvenientes
-
pero con diferentes tipos de compensaciones
-
Ofrece más privacidad.
-
Lightning aborda los problemas de escalabilidad de Bitcoin.
Analogía:
-
Un huésped se registra en un hotel; de anticipado le piden su tarjeta de crédito
-
para cubrir los cargos de habitación y tarifas imprevistas de la estadía.
-
Es más eficiente y menos costoso que cargar la tarjeta cada vez que incurre en un gasto.
-
El hotel lleva un registro de todos los gastos de el cliente.
-
Existe una farmacia y una peluquería independientes dentro del hotel
-
El huésped compra productos, usa servicios y firma la deuda a su habitación.
-
El hotel cobra una comisión por intermediar el pago entre el huésped y el negocio.
-
Si el huésped tiene algún problema o una queja,
-
se le descuenta la cantidad necesaria de su cuenta
-
La tarjeta sólo se carga después de la estadía
-
cuando el huésped haya verificado que los cargos y el saldo sean correctos.
Lightning Network funciona de manera similar pero diferente. Cómo así?
-
La analogía es precisa con la exclusión de la necesidad de confianza
-
Este es un malentendido muy común de LN: no es un sistema de crédito.
-
Las transacciones de LN no son pagarés:
-
son transacciones de Bitcoin válidas que mueven UTXO reales
-
En lugar de darle a alguien una tarjeta de crédito y dejar una cuenta abierta,
-
dos nodos pueden abrir un canal de pago, o una ruta de transferencia
-
Las partes pueden realizar tantas transacciones veces como lo deseen,
-
manteniendo su saldo siempre actualizado.
-
Cuanto más grande un canal,
-
mayor la cantidad de bitcoin que se puede transferir en ambas direcciones
-
Se puede construir rutas con todos aquellos con los que se hacen transacciones.
-
Cuantos más canales,
-
más conexiones y mejores atajos para llegar a ciertos destinos.
-
Si existe una ruta directa,
-
todo es sencillo y se hace una transaccion segun el tamaño del canal.
-
Si la conexión es a través de un tercero (un puente),
-
se debe pagar un peaje por pasar
-
Para abrir un canal nuevo, ambos nodos pagan un fee pequeño a los mineros
-
No se necesita actualizar y verificar cada transacción en la red,
-
Esto sería costoso y tomaría mucho tiempo.
-
Por el contrario, se aprueba cada movimiento con ambas firmas digitales
-
Cuando cualquiera de las partes decide cerrar el canal,
-
puede transmitir unilateralmente la última transacción a la red Bitcoin.
Mira una visualización:
-
Si A tiene un canal abierto con B y B tiene un canal abierto con C, A puede enviar BTC a C a través de B sin necesidad de confiar o conocer a B.
Actividad:
Miremos un simulador: https://www.robtex.com/lnemulator.html?conf=A5-5B,B5-5C&send=A2C
-
El uso de Lightning es tan barato y rápido como el envío de un correo electrónico
-
con el beneficio adicional de la naturaleza segura y sin confianza de Bitcoin.
-
Sólo las dos personas que mantienen dinero en un canal abierto saben
-
cuánto, qué tan a menudo y cuándo se mueve ese dinero.
-
En comparación, si se hacen 3 transacciones “en cadena”, es decir,
-
se quedan en la capa base,
-
hubieran sido mucho más lentas y caras.
-
Cada una de estas transacciones tendría que involucrar a todos los participantes de la red
-
Se podría visualizar de la siguiente manera: