Dominando Web 3.0 con Waves -Módulo #2
Módulo 2: Web 3.0, decentralización, blockchain y criptomonedas
¡Hola!
Es un nuevo módulo de nuestro curso en línea “Dominando Web 3.0 con Waves”. Hoy hablaremos de los aspectos básicos de la web del futuro:
Evolución de la tecnología web, Principios básicos de la Web3.0, Firmas digitales, Distributed Ledger Technology (DLT), Blockchain y criptomonedas.
Haremos una descripción general de la blockchain Waves, su consenso y la utilidad de su token con mayor precisión.
Y por supuesto, al final de este módulo completaremos un desafío práctico de codificación.
¡Empecemos!
2.2 “Coupon Bazaar” visión general de un mercado abierto.
2.3 Breve historia de la evolución web.
2.4 Servicios web y arquitectura Web3.0. Firmas digitales.
2.5 Transacción, Blockchain, Descentralización, DLT y Consenso.
2.6 Criptomonedas, Transparencia, Liquidez, Gateways e Intercambios.
2.7 Utilidad del token Waves. Fees.
¡Que lo disfrutes!
Recuerde, este es un curso práctico en línea donde construiremos un mercado de cupones descentralizado de Web3.0: “Coupon Bazaar”.
Tenga en cuenta que los usuarios están buscando descuentos en bienes y servicios que pueden comprar por un pequeño precio en el “Cupón Bazar”.
Cada cupón es un activo digital que representa un descuento especial ofrecido por los proveedores.
Por lo tanto, El “Cupón Bazar” es un mercado que ofrece sistemas de pago, coordinacion cliente-proveedor y de servicios de entregas
¡Guay! Pero, ¿qué hay de malo con los servicios web actuales? Echemos un vistazo a la evolución del internet.
Al principio, las páginas web eran en su mayoría servicios de “solo lectura”. Donde las grandes empresas eran los principales creadores de contenido, y las páginas eran solo estáticas.
La adopción y penetración del Internet crecio rapidamente y ahora tenemos una gran cantidad de contenido generado por usuarios. El Internet se convirtió en un servicio web de “lectura” y “escritura”, donde las páginas se volvieron interactivas y dinámicas.
Pero, ¿qué sigue?
Podemos ver que el Internet se está volviendo cada vez más inteligente. Hay muchos usuarios que comparten sus comunicaciones y crean contenido. La complejidad del comportamiento de los usuarios también está aumentando dramáticamente. Siendo amplificado mediante la integración de tecnologías modernas en la web, tales como: Internet de las Cosas (IoT), Inteligencia Artificial, BigData, la Realidad Virtual y Aumentada.
Para manejar este complejo crecimiento, la Internet debería ser más descentralizada, segura y enfocada en el usuario.
¡Veamos cómo sería!
Los servicios web tradicionales poseen secciones especificas para “servidor” y “cliente”. Cuando un usuario abre una página en su navegador, el servidor responde con una página web con contenido estático, HTML, diversos recursos (es decir, imágenes y fuentes) y código JavaScript.
Una vez que el usuario interactúa con los componentes UI de la página web, por ejemplo, los botones y los formularios, el código JavaScript crea nuevas solicitudes al servidor: para obtener más datos que mostrar o para simplemente escribir datos en la base de datos interna del servidor.
Después de procesar esta solicitud, el servidor devuelve en respuesta un dato de valor clave de JSON. El navegador utiliza estos datos para cambiar el estado y la vista de la aplicación del cliente.
La Web 3.0 funciona de una manera diferente. Por supuesto, la aplicación Web3.0 también requiere del código HTML y JavaScript para ejecutarse en un navegador. Por lo tanto, el código para interactuar con el servidor como con la aplicación por parte del cliente es aún necesario.
Una solicitud de “Lectura” es creada cuando un usuario interactúa con una aplicacion o UI. En una aplicación Web3.0, la solicitud es procesada por un nodo de una Distributed Ledger — o por una Blockchain. La principal diferencia es que cualquiera puede tener acceso a leer los datos subidos, al menos en la mayoria de Distributed Ledgers publicas.
Lo más importante es: saber cómo escribir una información en la red de blockchain. Aquí utilizamos los términos “transacción” y “firma digital”.
Todas las actualizaciones realizadas en una red de blockchain deben implementarse mediante una transaccion de envío, que a su vez requiere una firma digital por parte del creador de la transacción.
¿Qué es una firma digital?
Imagine que Bob creó dos claves, una privada y una pública. Estas claves están interconectadas por una fórmula matemática de manera que para cada clave pública solo hay una clave privada, y viceversa.
Cuando Bob crea un mensaje o una transacción, la firma utilizando su clave privada. Bob debe mantener su clave privada en secreto y segura todo el tiempo. Pero Bob puede compartir su clave pública con cualquier persona para que esta valide el mensaje o la transacción firmada. Cualquier persona que posea la clave pública de Bob puede verificar que cierta transacción fue firmada por la clave privada de Bob. Verificando que Bob fue el único capaz de crear y firmar ese mensaje/transacción.
En general esto se conoce como criptografía asimétrica. Las claves públicas y privadas están vinculadas mediante una fórmula matemática, en una forma en la que para cada clave pública solo existe una clave privada y viceversa.
Un dato importante:
Una clave privada puede ser generada a partir de una Seed phrase aleatoria usando funciones de hashing. La clave pública se obtiene de la clave privada mediante una multiplicación de curva elíptica. La direccion de la billetera (address), por otro lado, se obtiene directamente desde la clave pública mediante el uso de funciones de hashing.
Entonces, como puedes ver, todas estas transformaciones son unidireccionales. Revertir las operaciones es muy difícil en términos de cálculos requeridos.
En realidad, ¡implica un valor astronómico (~ 2²⁵⁶)!
Las seed phrases (semillas) y las claves privadas deben almacenarse de forma segura. Pero al mismo tiempo deben ser fáciles de usar al momento de firmar transacciones. El navegador es el software principal en la interacción Web, por lo que una de las mejores soluciones es mantener las semillas y claves en extensiones del navegador.
Waves Keeper es una extensión de navegador que puede mantener claves de forma segura y permite firmar transacciones fácilmente en sitios web de terceros.
¡Que lo disfrutes!
Vamos a profundizar en las definiciones mencionadas anteriormente.
¿Qué es una transacción? Una transacción de blockchain es un registro nuevo que posee campos obligatorios y opcionales. Cada nuevo registro cambia el estado de la red blockchain. Sucede de forma reversible o irreversible según la etapa de la transacción, el estado de validación de bloque y las condiciones de la infraestructura.
Por ejemplo, una “transacción de transferencia de activos” contiene una marca de tiempo (timestamp), un número de bloque, un remitente, un destinatario, una cantidad y un cargo por transacción (fee).
La cadena de bloques Waves posée variados tipos de transacciones a nivel central.
¿Qué es una blockchain? Básicamente, es una estructura de datos con reglas específicas: varias transacciones se combinan en un bloque, cada bloque tiene un valor de hash único representado por los hashes de cada transacción en particular (en forma de un árbol de Merkle).
Cada bloque contiene la cadena de hash del bloque anterior. Esta secuencia de bloques genera la cadena de bloques.
Esta estructura protege los datos de ser modificados (inmutabilidad).
Si se cambiará algo en el bloque A, todos los bloques siguientes no serian válidos y se deberian volver a crear.
Como podemos ver, reescribir la historia de una cadena de bloques es computacionalmente costoso
Pero imaginemos que tenemos cientos sino miles de copias de los datos de la cadena distribuidas en diferentes computadoras, diversos países y continentes. Ahora, para cambiar el historial de bloques, tenemos que reescribir los bloques en la mayoría de las copias, convirtiéndose incluso en un proceso más costoso en términos de los recursos computacionales requeridos.
Es por eso que puede escuchar que la tecnologia blockchain es capaz de mantener los datos inmutables durante siglos.
El problema es que diferentes máquinas son capaces de generar diferentes cadenas de bloques. Este fenómeno se llama fork.
Para mantener la misma informacion en diferentes máquinas, todos los participantes tienen que llegar a un consenso en cada nuevo bloque generado.
Los participantes de la red deben decidir quién es responsable de la generación de un nuevo bloque. El participante seleccionado por el algoritmo de consenso es responsable de la creación de un nuevo bloque y es conocido popularmente como minero, generador de bloques o productor de bloque. El proceso de generación de bloques se llama minería.
En realidad, hay muchos tipos de algoritmos de consenso con diferentes ventajas y desventajas.
l primer algoritmo clásico de consenso se llama Prueba de trabajo (PoW por sus siglas en Ingles). Fue diseñado originalmente por Adam Back para el proyecto de servicio de correo electrónico — Hashcash. Hashcash es un sistema de prueba de trabajo utilizado para limitar los correos no deseados y los ataques de denegación de servicio (DDoS). Se basa en el cálculo de un valor especial “nonce”, del cual el hash da como resultado un número específico de ceros. Donde todos los participantes del nodo realizan las mismas permutaciones aleatorias para encontrar dicho valor correcto.
La probabilidad de encontrar este valor depende de la potencia computacional. Es un algoritmo de consenso bastante costoso y no tan eficiente en términos de escalabilidad y velocidad.
En 2008, un autor anónimo con el apodo de Satoshi Nakamoto propuso usar el algoritmo de Prueba de trabajo para una nueva moneda digital llamada Bitcoin.
Actualmente, uno de los algoritmos de consenso más populares es el Delegated Proof of Stake (DPoS), donde todos los poseedores de criptomonedas votan por sus delegados. La cantidad de delegados está limitada por un número predefinido y relativamente pequeño.
Solo los participantes seleccionados pueden generar nuevos bloques en un orden predefinido. Todos los demás participantes no pueden participar en el procedimiento de creación de bloques. Hay muchas preguntas sobre si esto debe considerarse realmente descentralización .
La cadena de bloques Waves usa en cambio un consenso de Leased Proof of Stake (LPoS). En lugar de seleccionar un número limitado de productores de bloques, los usuarios de LPoS pueden arrendar (no transferir) una cantidad de tokens de Waves a los nodos des u preferencia y/o confíanza. La probabilidad de ser un validador de bloque es proporcional a la cantidad total de tokens atraídos (desde los arrendatarios).
Los WAVES arrendados son bloqueados en la cuenta del usuario y no pueden ser transferidos o intercambiados. Aún así, los tokens permanecen en el control total del titular de la cuenta y el arrendamiento puede cancelarse en cualquier momento.
En ambos tipos de consenso, los propietarios de nodos suelen trabajar en la popularización y atracción de usuarios al proporcionar actividades en medios sociales o mediante el desarrollo de productos útiles para la comunidad.
Para trabajar con una red de blockchain, los desarrolladores deben tener una versión de prueba de la red. Waves tiene dos tipos de redes públicas para uso de los desarrolladores:
TestNet y MainNet. MainNet — es una red de modo de producción. TestNet es una red para probar sus productos y dApps en un entorno similar al entorno de producción, pero sin riesgos financieros durante el período de prueba.
Cada interacción con la red de blockchain tiene un costo en el token nativo de la plataforma: WAVES. Lo mismo es cierto para la TestNet. Pero existe una faucet (grifo) gratuita para obtener TestNet WAVES. Simplemente escriba su dirección pública de la TestNet, pase la verificación de captcha y recibirá tokens Waves para utilizar en la TestNet, permitiendole probar sus aplicaciones decentralizadas.
Hablemos un poco sobre los aspectos económicos de Web3.0
Como podemos ver, la evolución del dinero tiene varios hitos importantes:
Trueque antes del dinero
Oro y plata despues
Monedas de metal
Papel moneda o billetes de banco
Tarjetas de plástico
Dinero electrónico
Y finalmente Criptomonedas — El fenómeno moderno.
Debido a su naturaleza descentralizada, las criptomonedas no tienen un propietario intrínseco. Lo que significa que una criptomoneda verdaderamente descentralizada no puede ser controlada ni bloqueada por una sola persona o entidad. Cualquier persona que tenga acceso a Internet puede operar con ellas sin ningun tipo de restricción. Esto hace que el sistema cripto sea sin fronteras y esté disponible para todo el mundo. No importa cuál sea su país de origen, situación política, cultural, religiosa o económica. Todos son bienvenidos en un sistema descentralizado.
Todo es transparente dentro de una red blockchain pública, ya que todos pueden ver sus propias transacciones al igual que las de otros.
Todo es anónimo, a menos que usted transmita/informe que cierta dirección pública le pertenece a usted o a alguien que conoce.
Puedes ver los detalles de cualquier transacción en el explorador blockchain
Para tener valor monetario cualquier criptoactivo debe ser líquido. En negocios, economía e inversión, la liquidez es una característica del mercado por la cual una persona o empresa puede comprar o vender un activo de forma fácil y rápida sin causar un cambio drástico en el precio del activo.
Al igual que todo en economía, los criptoactivos tienen un precio determinado por el equilibrio entre oferta y demanda.
A mayor demanda — mayor precio de los activos.
Para comprar o vender un activo criptográfico, las personas pueden utilizar puertas de enlace (gateways) o intercambios (exchanges).
Todos los bienes nacionales o tradicionales se denominan “fiat”. Para comprar un recurso criptográfico, debe utilizar puertas de enlace / intercambios que le permitan ttransformar fiat-cripto y viceversa.
Con Waves puedes usar muchas puertas de enlace con diferentes monedas fiduciarias nacionales.
También puede intercambiar criptoactivos en intercambios que utilizen diferentes estrategias comerciales al realizar pedidos de compra o venta. Waves DEX: es un intercambio descentralizado que posee muchos criptoactivos con buena liquidez.
La blockchain pública de Waves tiene su propio token nativo — WAVES. La demanda del token nativo Waves está garantizada por su utilidad dentro de la plataforma.
Todas las transacciones de blockchain tienen tarifas (fees) en WAVES. Lo que significa que para usar la plataforma los usuarios deben pagar por ella. Afortunadamente, las tarifas de en WAVES son muy pequeñas y hacen que la plataforma sea accesible para todos.
Por ejemplo: una transacción de transferencia tiene una tarifa equivalente a aproximadamente 0,5 centavos de dólar (US$0.005) por cualquier monto de activos transferidos.
¿Bastante barato verdad?
El token nativo es muy importante para la funcionalidad de la plataforma:
- Hace que cualquier ataque DDoS sea caro
- Fomenta que los nodos de red / productores de bloque mantengan la red.
- Incentiva a los colaboradores de la plataforma para mejorar la infraestructura.
Recuerde que la blockchain de Waves usá un consenso de Leased Proof of Stake . La probabilidad de ser un validador de bloque es proporcional a la cantidad total de tokens atraídos por parte de los arrendatarios. Y con cada bloque validado, el minero recibe la recompensa (reward) generada por las tarifas de transacción (fees).
En este módulo practicaremos con el almacenamiento de datos de una forma descentralizada y pagos criptográficos con Waves
Volvamos a nuestro Mercado del Futuro.
Estamos construyendo un mercado de cupones descentralizado utilizando Web3.0: “Coupon Bazaar”. Los usuarios están buscando cupones de descuento por bienes y servicios y pueden comprarlos por un pequeño precio en este mercado. Cada cupón es un activo digital que representa un descuento especial ofrecido por un proveedor.
Así que vamos a implementar funcionalidades para los Proveedores:
- Un sistema de registro de proveedores.
- Posibilidad de gestión de artículos.
- Confirmación/verificación de compra
Adicionalmente con funcionalidad para Clientes:
- Buscar “cupón”
- Compra con criptomoneda
Usaremos una característica especial y de las más importantes para el desarrollo de dApps: — Data Transaction.
…junto con una cuenta inteligente (smart account) dApp — la cual aceptara todas las Data Transactions de los proveedores y rechazara todas las transacciones salientes, excepto las de set script transactions, requerida para actualizar la lógica de la cuenta inteligente en el futuro.
Data Transactions — proporcionan una manera de almacenar información en la red de blockchain usando una estructura de key-value (clave-valor):
“El tamaño máximo para una clave es de 100 caracteres, y una clave puede contener cualquier punto de código Unicode arbitrario, incluidos espacios y otros símbolos no imprimibles. Las Strings tienen un límite de 32,768 bytes y el número máximo de entradas posibles en una transacción de datos es 100. En general, el tamaño máximo de una transacción de datos es de alrededor de 140 kb, para referencia, casi la longitud exacta de la obra de Shakespeare ‘Romeo y Julieta’ Shakespeare’s play ‘Romeo and Juliet’.”
¡Te deseamos mucha suerte con el “Desafio de Codigo”!
¡Que lo disfrutes!