diff --git a/dapps-es.md b/dapps-es.md new file mode 100644 index 00000000000..79993d771a8 --- /dev/null +++ b/dapps-es.md @@ -0,0 +1,1058 @@ +# Blockchain, DApps y Blockstack + +## Conceptos básicos para empezar + +---------------- + +### Estas diapositivas: [slides.cuban.tech/dapps.html](http://slides.cuban.tech/dapps.html) + +---------------- + +### Información Wifi + +Red: cubantech + +Contraseña: meet-ups + +---------------- + +## Esbozo + +- Máquinas de estado replicadas (denominadas RSM) +- Herramientas de infraestructura, gestión y administración +- Relación entre RSM y Blockchain +- Reglas de ejecución y consenso +- Teoría General de DApps +- Vista general de Blockstack +- RSM de DApp independiente de blockchain con VirtualChain + +Notas sobre la red Bitcoin P2P entre + +---------------- + +## Máquinas de Estado - Estados + + + +---------------- + +## Máquinas de estado - Entradas + + + +---------------- + +## Máquinas de Estado - Transición + + + +---------------- + +## El problema de la escalabilidad + + + +-- + +## Estadísticas de Bitcoin + + + +---------------- + +## Servicios distribuidos como máquinas de estado + +- Tolerancia a fallos más allá de los procesadores de un solo nodo +- Réplicas de un único servidor ejecutado en procesadores separados +- Protocolos para interacciones de clientes con réplicas +- Aislamiento físico y eléctrico para fallos independientes del servidor +- Asumamos que la máquina de estado determinista + - .... incluso si Turing completo es posible + +---------------- + +## El enfoque de la máquina de estado + +- Implantar réplicas del software +- Recibir las solicitudes de los clientes (las entradas) +- Pedir las entradas +- Ejecute la transición de SM una y otra vez +- Supervisar las réplicas en busca de diferencias de estado o de salida. + +---------------- + +## El enfoque de la máquina de Estado + +### Desplegar software en múltiples nodos + +[](http://docker.cuban.tech) + +[docker.cuban.tech](http://docker.cuban.tech) + +- Repositorios de paquetes de software + - por ejemplo[bitcoind @ Debian](https://packages.debian.org/bitcoind),[Blockstack apt repo](https://packages.blockstack.com), .... +- Contenedores y registros + - Por ejemplo,[Lisk](https://hub.docker.com/u/lisk/),[Blockstack](https://hub.docker.com/u/blockstack), .... Docker Hub +- Herramientas CM (Ansible, Puppet, Chef, Habitat, ....) + +---------------- + +## Estado de CM - Q1 2017 + + + +---------------- + +## El enfoque de máquina de estado + +- Implantar réplicas del software +- Recibir las peticiones del cliente (es decir, las entradas) +- Pedir las entradas +- Ejecute la transición de SM una y otra vez +- Supervisar las réplicas en busca de diferencias de estado o de salida. + +---------------- + +## El enfoque de la máquina estatal + +### Recibir las peticiones de los clientes + +- Múltiples soluciones +- p. ej., transacciones Bitcoin + +---------------- + +## Bitcoin - Anatomía de las transacciones + +### Meta-datos importantes (excepto[transacciones en la base de monedas](https://bitcoin.org/en/glossary/coinbase-transaction)) + + + +- ID de transacción (global) +- Número de versión (evolución del protocolo) +- Hora de cierre + - La primera vez que se puede añadir TX a la cadena de bloques + - Transacciones con bloqueo temporal que sólo son válidas en el futuro. + - Cancelaciones + +-- + +## Bitcoin - Anatomía de las transacciones + +### Entradas y salidas + + + +- Resultado(s) : Índice de arreglo implícito + * Cantidad (satoshis) + * Guión Pubkey ( Desbloquear para gastar) +- Insumos(s) + * Salida gastada (ID de transacción + Índice de salida) + * Número de secuencia (relacionado con la hora de cierre) + * Script de firma (parámetros para desbloquear el script Pubkey) + +> Bitcoin es un libro de contabilidad de distribución pública. + +-- + +## Bitcoin - Transacción de muestra + + blocktrail.com + + + +-- + +## Bitcoin - Envío de transacciones + +##### Configuración de pago a clave pública (P2PKKH) + + + +- Curva (elíptica) ECDSA secp256k1 + - Generación de claves públicas determinantes (hash) + +-- + +## Bitcoin - Envío de transacciones + +##### Configuración de pago a hash de clave publica (P2SH) + + + +- Redimir el hash del script en lugar del hash de la clave pública + * Soporta [PubKey scripts opcodes](https://bitcoin.org/eb/developer-reference#opcodes) + +-- + +## Bitcoin - Envío de transacciones + +###### Finalize TX + + + +- El remitente crea UTXO con el script PubKey + * ... usando el hash de clave pública del receptor +- Transacción de emisiones del remitente (red P2P) +- Los mineros lo añaden a un bloque (... más detalles más adelante...) +- Cartera : Cantidad de UTXO como saldo utilizable + +-- + +## Bitcoin - Gastar salidas P2PKH + + + +- ID de transacción de búsqueda e índice para UTXO +- El remitente crea la entrada de transmisión y también agrega: + * Número de secuencia + * Firma y PubKey (script params) + +-- + +## Bitcoin - Gastar salidas P2SH + + + +- ID de transacción de búsqueda e índice para UTXO +- El remitente crea la entrada de transmisión y también agrega: + * Número de secuencia + * Firma y PubKey (script params) + +-- + +## Bitcoin - Salidas de gastos + +###### Last steps + +- El remitente prepara el UTXO para el destinatario (como antes) +- Transacción de emisiones del remitente (red P2P) +- Los mineros lo añaden a un bloque + - Validación del guión ( A-ha!) +- Cartera : Actualizar saldo + +-- + +## Bitcoin - Script público P2PKH estándar + +##### Línea de tiempo de la pila de ejecución + + + +--- + +# Red P2P + +Un monstruo muy peculiar + +-- + + +## Red P2P + +##### Descubrimiento entre iguales - DNS de semillas de Bitcon + +``` +SECCIÓN DE PREGUNTAS +;semilla.bitcoin.sipa.be IN A + +SECCIÓN DE RESPUESTAS +semilla.bitcoin.sipa.be. 60 EN UN 192.0.2.113 +semilla.bitcoin.sipa.be. 60 EN UN 198.51.100.231 +semilla.bitcoin.sipa.be. 60 EN UN 203.0.113.183 +``` + +- Conecte al puerto `8333` (red principal) o `18333` (red de prueba) +- Seguido de mensajes `addr` que anuncian las direcciones de los compañeros + +-- + +## Red P2P + +##### Conectando con sus pares + +- Enviar [mensaje `version`](https://bitcoin.org/en/developer-reference#version) + * número de versión local, bloque y hora actual +- El par responde con su propio mensaje de "versión +- Enviar `getaddr` y recibir `addr` de nuevos pares (descubrimiento) + +-- + +## Red P2P + +##### Transacciones de radiodifusión + +- Envíe [mensaje de invitación](https://bitcoin.org/en/developer-reference#inv) a un par. +- Esperar el mensaje `getdata` +- Enviar datos de la transacción en un mensaje `tx`. +- Los pares reenvían transacciones a otros pares +- Los nodos completos realizan un seguimiento de las transacciones no confirmadas en [memory pool](https://bitcoin.org/en/developer-guide#memory-pool) + +> ...continuará... + +--- + +## El enfoque de la máquina de estado + +- Implantar réplicas del software +- Recibir las solicitudes de los clientes (es decir, las entradas) +- Ordenar las entradas +- Ejecute la transición de SM una y otra vez +- Supervisar las réplicas en busca de diferencias de estado o de salida. + +--- + +## El enfoque de la máquina de estado + +##### Pedido de entradas + +- Soluciones mutiple +- [Blockchain](https://en.wikipedia.org/wiki/Blockchain_database) ? +- Transacciones Bitcoin! + +-- + +## Bitcoin - Gastos de transacción + + + +Ordenamiento causal : Cadena de propiedad + +--- + +## El enfoque de la máquina de Estado + +- Implantar réplicas del software +- Recibir las solicitudes de los clientes (es decir, las entradas) +- Pedir las entradas +- Ejecutar la transición de SM una y otra vez. +- Supervisar las réplicas en busca de diferencias de estado o de salida. + +--- + +## El enfoque de la Máquina de Estado + +##### Ejecutar la Máquina de Estado + + + +- Ejecutar las entradas en el orden seleccionado en cada réplica. + +-- + +## Bitcoin - Propagación de transacciones + + + +--- + +## Bitcoin blockchain + +##### Metas de diseño + +- Libro mayor público + - Transacciones ordenadas y con sello de tiempo +- Almacenamiento distribuido sobre Bitcoin [nodos completos](https://bitcoin.org/en/glossary/node) +- Proteger contra + - [double spending](https://bitcoin.org/en/glossary/double-spend) + - modificación de registros de transacciones anteriores + +-- + +## Bitcoin blockchain + +###### Panorama general + + + +-- + +## Cabecera del bloque Bitcoin + +- **Versión**: 4 bytes +- **Características de la cabecera del bloque anterior**: 32 bytes +- **Hash de raiz Merkle**: 32 bytes +- **Tiempo**: 4 bytes +- **nBits**: 4 bytes +- **nonce**: 4 bytes + +-- + +## Bitcoin Bloque 493387 + + blocktrail.com + +[](https://www.blocktrail.com/BTC/block/000000000000000000ad396808fdc05052655d8a80aee7ffc538b71828ea03d3) + +-- + +## Bitcoin Block 493387 - Transacciones + +La transacción de Coinbase es lo primero + +[](https://www.blocktrail.com/BTC/block/000000000000000000ad396808fdc05052655d8a80aee7ffc538b71828ea03d3) + +--- + +## Proofs + +- Métrico + * Demostrar interés legítimo, irreversibilidad + * Tomar decisiones sobre cambios en un DApp +- Modificar bloques pasados es más difícil que añadir nuevos bloques. +- Ejemplos comunes + * **Prueba de trabajo** (PoW) + * **Prueba de participación** (PoS) + * **Prueba de espacio** (PoSpace) + * **Prueba de colaboración** (PoC) + * **Prueba de réplica** (PoR) +- Se puede utilizar en paralelo + * p.ej.[PeerCoin](http://peercoin.net) se basa en PoW + PoS + +-- + +## Prueba de trabajo + +- *Conductor* . : Cantidad de trabajo computacional (CPU, GPU, NPU,...) que contribuyó al funcionamiento del DApp. +- Recursos intensos (energía, refrigeración,...) +- El mecanismo para establecer el consenso a través del PoW se denomina comúnmente minería. + +> *Bitcoin* utiliza este enfoque para su funcionamiento diario. + +-- + +## Proof of stake + +- *Conductor* : nuevas monedas según el número de monedas (stake) que poseas. +- Puede ser abusado por aquellos que tienen suficientes monedas. +- Normalmente se combina con otras pruebas + +> *OmniLayer* se basa en el mecanismo POS. + +-- + +## Prueba de capacidad + +- *Conductor* : asignación de cantidades no triviales de memoria o almacenamiento necesarias para resolver un problema (funciones difíciles de memorizar). +- Alternativa más ecológica al PoW + +> Se utiliza PoStorage en PermaCoin, SpaceMint,[BurstCoin](https://en.wikipedia.org/wiki/Burstcoin) . + +-- + +## Prueba de colaboración + +- Validación colaborativa de nodos (en breve CVNs) + *[Decide](https://chain.fair-coin.org/download/FairCoin2-white-paper-V1.1.pdf) qué nodo crea el siguiente bloque + * Aprobar CVN mediante la firma digital de un dato que contenga la identificación del ganador. + * Con las firmas requeridas, reúna TX y cree un nuevo bloque. +- Sin recompensa (dinero nuevo) por la creación del bloque (cuota pequeña) +- El consumo de energía es bajo (CVNs en una Raspberry3) + +> FairCoin (fork de Bitcoin 0.12) implementa PoC desde el 18 de julio de 2017. + +--- + +## Árbol de Merkle - Transacciones de Recoleccion + + + +**Modos de funcionamiento**: [SPV clients](https://bitcoin.org/en/glossary/simplified-payment-verification) vs[nodo completo](https://bitcoin.org/en/glossary/node) + +--- + +## Red P2P (contd.) + +##### Descarga del bloque inicial + +- Primera ejecución : El nodo sólo contiene[bloque 0](https://bitcoin.org/en/glossary/genesis-block) +- Elija un par remoto (también conocido como nodo de sincronización) +- Descargar desde el bloque 1 a la punta actual de la mejor cadena de bloques del nodo de sincronización + * Bloques primero (hasta la versión 0.9.3) + * Encabezados primero (desde 0.10.0 en adelante) + +--- + +## Bitcoin mining + +- Añadir nuevos bloques a la cadena de bloques +- Dificultar la modificación del historial de traducción +- Estrategias + * Minería en solitario + * Minería colectiva + +--- + +## Minería Bitcoin - Minería en solitario + + + +- Minero genera nuevos bloques por su cuenta +- Reclama completamente el premio de bloqueo y las comisiones de transacción +- Grandes pagos +- Mayor varianza (mayor tiempo entre ellos) + +--- + +## Bitcoin mining - Minería en grupo + + + +- Grupo de mineros comparte recursos con otros mineros +- Encuentra los bocks más a menudo en los objetivos de bits más fáciles +- Producto compartido entre los mineros + * Correlacionado con la potencia relativa del hash PoW +- Pagos pequeños +- Menor varianza (es decir, menor tiempo entre pagos) + +-- + +## SlushPool + +[slushpool.com/home/](https://slushpool.com/home/) + + + + Monedas acuñadas ``+1M BTC` extraídas desde diciembre de 2010. `ZCASH` desde el 20 de abril de 2017 + +-- + +## SlushPool + +###### Hash rate + + + +-- + +## SlushPool + +##### Distribución de las tarifas de Hash + + + +-- + +## Bitmain - AntMiner + +[bitmaintech.com](https://bitmaintech.com/) + + + + Monedas acuñadas : `BTC` + +-- + +## Bitmain - AntPool + +[bitmaintech.com](https://bitmaintech.com/) + + + +-- + +## Pool de BTCC + +[pool.btcc.com](https://pool.btcc.com/) + + + + Monedas acuñadas : `BTC` + +--- + +## Hardware minero Bitcoin + +##### Capacidad instalada - 2017/11/13 + +