Skip to content

Latest commit

 

History

History
345 lines (243 loc) · 16.5 KB

Clase #6 V.3.asciidoc

File metadata and controls

345 lines (243 loc) · 16.5 KB

Bitcoin cómo Depósito de Valor y cómo Red de Pagos

  • 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.

El problema del doble gasto

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?

Grupo de memoria o mempool

  • 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.

Actividad-Transacciones Verificadas pero no Confirmadas

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

La Red de Bitcoin (On-Chain)

  • 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

Nodos Completos

  • 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:

    1. Compartir información (a sus nodos vecinos)

  • ❏ Hay dos tipos de transacciones que comparten los nodos:

    1. 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

    1. Transacciones confirmadas:

  • transacciones que han sido "confirmadas" y escritas en un bloque.

  • Estas se agrupan y forman los bloques; no se comparten individualmente.

    1. 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)

  1. 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 -Bitcoin Core:

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

“Lightning Network” (Off-Chain):

Cuál es la diferencia entre la Capa 1 o Capas Base y la Capa 2?

¿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:

  • 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: