Introduccion a Blockchain
Esta guía está diseñada para proporcionar a los estudiantes del reto 20 dias de QA en apps descentralizadas una comprensión fundamental de la tecnología blockchain, adaptada a sus diferentes niveles de experiencia. Se abordarán los conceptos básicos para aquellos sin experiencia previa en QA ni blockchain, y se profundizará en el testing de blockchain para aquellos con experiencia en QA pero nuevos en este campo.
Nota sobre los ejemplos:
Los ejemplos que usaremos durante esta nivelación están basados en situaciones reales que ocurren en Venezuela. Nuestro objetivo es dar visibilidad a los problemas sociales y tecnológicos que enfrenta el país, especialmente aquellos relacionados con el mal uso o fallas en sistemas digitales. Estos casos no necesariamente se replican en otros países o contextos, pero nos ayudan a entender el impacto real que puede tener una mala práctica de desarrollo o una mala decisión técnica. Siempre explicaremos cuál es el problema y cómo debería funcionar una solución correctamente diseñada.
Blockchain para Principiantes (Sin Experiencia Previa)
¿Qué es Blockchain?
Una blockchain, o cadena de bloques, es esencialmente una base de datos distribuida y descentralizada. A diferencia de las bases de datos tradicionales que dependen de un servidor central, la información en una blockchain se almacena en múltiples computadoras, conocidas como nodos, que están interconectadas a través de internet. La característica clave es que todas las copias de esta base de datos son igualmente válidas, lo que la hace extremadamente resistente a la manipulación y a fallos en un único punto.
Casos de uso
1. Identificación digital inmutable
Problema actual: En Venezuela, funcionarios han alterado datos en bases centralizadas de identificación (como emails o contraseñas) impidiendo que ciudadanos renueven documentos sin pagar sobornos.
Solución con blockchain:
Una base de datos en blockchain sería inmutable y auditable. Cualquier cambio en los datos dejaría un rastro visible para todos, incluyendo qué nodo lo hizo, cuándo y con qué permisos. Esto evita manipulaciones internas invisibles.
- Distribución transparente de alimentos y subsidios
Problema actual: En programas sociales como CLAP, no se sabe públicamente quién recibió ayuda, cuándo y por qué criterio. Esto permite discrecionalidad política o corrupción.
Solución con blockchain:
Registrar la entrega de subsidios en una red pública o consorciada permite trazabilidad: se podría verificar si una persona recibió cierto beneficio, evitando duplicidades o favoritismos sin justificación.
- Votación digital verificable
Problema actual: Hay desconfianza generalizada sobre el sistema electoral venezolano, incluyendo manipulación de actas y resultados.
Solución con blockchain:
Un sistema de votación en blockchain permitiría a cada ciudadano verificar que su voto fue registrado y contado sin revelar por quién votó. Además, el conteo sería visible y auditable en tiempo real por cualquier parte interesada.
- Contratos públicos y licitaciones
Problema actual: Hay opacidad en la contratación pública. No se conoce fácilmente quién gana licitaciones ni si se cumplieron las condiciones del contrato.
Solución con blockchain:
Licitaciones públicas y ejecución de contratos podrían gestionarse mediante smart contracts, que registran condiciones y ejecutan pagos solo cuando se cumplen objetivos verificables. Cualquier ciudadano o auditor podría inspeccionar el proceso.
- Historial académico y títulos universitarios
Problema actual: Hay casos de títulos falsificados o expedientes académicos alterados, además de demoras extremas para validar documentos en el exterior.
Solución con blockchain:
Universidades podrían emitir títulos como certificados digitales sobre blockchain. Serían únicos, verificables en segundos y resistentes a falsificación. No dependerías de una oficina para validar autenticidad.
¿Cómo Funciona la blockchain?
El funcionamiento de una blockchain se basa en la organización de la información en ‘bloques’. Cada bloque contiene un conjunto de transacciones y datos de mantenimiento. Una vez que un bloque está completo y verificado, se añade a la cadena de forma secuencial e inmutable. La seguridad y la inmutabilidad de la blockchain provienen de un ingenioso sistema criptográfico: cada nuevo bloque incluye un código criptográfico que está directamente vinculado al bloque anterior. Esto significa que cualquier intento de alterar un bloque anterior sería inmediatamente detectable, ya que invalidaría el código de todos los bloques subsiguientes en la cadena.
Terminología Clave:
- Cadena: Se refiere a la secuencia enlazada de bloques, similar a los eslabones de una cadena física.
- Red: Es el conjunto de todos los ordenadores (nodos) que participan en la blockchain, ejecutando el motor de la base de datos e interactuando con ella.
- Protocolo: Son las reglas y el conjunto de normas que rigen las comunicaciones dentro de la blockchain, incluyendo cómo se crean las criptomonedas y cómo se registran y ejecutan las transacciones.
- Libro de Contabilidad Abierto (Ledger Distribuido): La blockchain funciona como un libro de contabilidad público y transparente, donde todas las transacciones se registran y son accesibles para todos los participantes de la red. Esto asegura la transparencia y la trazabilidad.
Blockchain vs. Criptomoneda:
Es crucial entender que blockchain es la tecnología subyacente, mientras que las criptomonedas (como Bitcoin o Ethereum) son una de sus aplicaciones más conocidas. Las criptomonedas utilizan la tecnología blockchain para registrar y verificar transacciones de forma segura. Sin embargo, la blockchain es una tecnología versátil, con muchas otras aplicaciones potenciales más allá de las monedas digitales, como la gestión de la cadena de suministro, sistemas de votación, y registros de propiedad, entre otros.
Una criptomoneda es una moneda digital o virtual que utiliza criptografía para asegurar las transacciones, controlar la creación de nuevas unidades y verificar la transferencia de activos, sin necesitar una autoridad central como un banco. Funciona de forma descentralizada, generalmente a través de una cadena de bloques (blockchain), y se almacena en monederos digitales.
Un token es un activo digital que se crea y opera sobre una blockchain existente, como Ethereum, y puede representar distintos valores o derechos, como activos digitales, acceso a servicios, o participaciones en proyectos, diferenciándose de las criptomonedas que son la moneda nativa de una blockchain.
Los tipos principales de tokens son:
| Tipo de Token | Descripción |
| ERC-20 | El estándar más común para tokens fungibles, usados para representar criptomonedas o activos intercambiables. |
| ERC-721 | Estándar para tokens no fungibles (NFTs), que son únicos y representan activos digitales individuales. |
| ERC-1155 | Estándar para tokens que pueden combinar funciones fungibles y no fungibles en un solo contrato inteligente. |
Seguridad en Blockchain:
La arquitectura de la blockchain la hace inherentemente segura y resistente a ataques. La inmutabilidad de los datos, garantizada por los enlaces criptográficos entre bloques, significa que una vez que una transacción se registra, no puede ser alterada ni eliminada. Cualquier intento de modificar un bloque sería detectado por la red, lo que la hace prácticamente inmune a la piratería y al fraude. Este nivel de seguridad es una de las razones principales de su creciente adopción en diversas industrias.
Blockchain para QAs con Experiencia (Nuevos en Blockchain)
Para los profesionales de QA con experiencia que se están adentrando en el mundo de blockchain, es fundamental comprender cómo esta tecnología impacta las metodologías de prueba existentes y qué nuevas consideraciones deben tenerse en cuenta.
Impacto de Blockchain en QA:
La tecnología blockchain introduce un nuevo conjunto de desafíos y oportunidades para el aseguramiento de la calidad. La naturaleza descentralizada, inmutable y transparente de las aplicaciones blockchain (dApps) requiere un enfoque de prueba diferente al de las aplicaciones centralizadas tradicionales. Los errores en una blockchain pueden ser permanentes y costosos, lo que eleva la importancia de un testing riguroso.
Desafíos Específicos del Testing de Blockchain:
Además de las pruebas funcionales y no funcionales habituales, el testing de blockchain implica consideraciones únicas:
- Testing de Smart Contracts: Los contratos inteligentes son programas que se ejecutan en la blockchain. Su código debe ser impecable, ya que una vez desplegados, no se pueden modificar. Las pruebas de seguridad, lógica de negocio y manejo de excepciones son críticas.
- Testing de Nodos y Red: Implica verificar la comunicación y el consenso entre los diferentes nodos de la red. Esto incluye pruebas de sincronización de datos, propagación de transacciones y resistencia a fallos.
- Rendimiento y Escalabilidad: Las blockchains pueden tener limitaciones en cuanto a la velocidad de las transacciones y el volumen de datos que pueden manejar. Las pruebas de rendimiento son esenciales para asegurar que la aplicación puede soportar la carga esperada.
- Seguridad Criptográfica: La seguridad de la blockchain se basa en principios criptográficos. Los QAs deben entender cómo se aplican estos principios y cómo probar vulnerabilidades relacionadas con la criptografía.
- Inmutabilidad de Datos: Una vez que los datos se registran en la blockchain, no se pueden cambiar. Esto significa que las pruebas deben ser exhaustivas antes de que los datos se escriban en la cadena.
- Pruebas de Consenso: Verificar que los mecanismos de consenso (ej., Proof of Work, Proof of Stake) funcionan correctamente y que todos los nodos llegan a un acuerdo sobre el estado de la cadena.
Herramientas Relevantes para QAs en Blockchain:
Existen diversas herramientas que facilitan el testing de aplicaciones blockchain:
- Ethereum Tester: Ideal para pruebas de integración Web3, API, Smart Contracts y backend en la red Ethereum.
- Hyperledger Composer: Permite modelar y probar redes blockchain con facilidad, ofreciendo pruebas automatizadas e interactivas.
- Exonum Testkit: Útil para probar la actividad del servicio completo de la aplicación blockchain, incluyendo pruebas de API y ejecución de transacciones.
- Truffle: Un framework popular para desarrolladores de Ethereum que incluye funcionalidades robustas para el testing automatizado de contratos.
- Manticore: Herramienta especializada en pruebas de seguridad para smart contracts y binarios.
- Corda Testing Tools: Ofrece características integradas para pruebas de contratos, flujos, integración y carga en la plataforma Corda.
- Hardhat es un entorno de desarrollo para blockchain Ethereum que permite compilar, probar y desplegar contratos inteligentes de forma local o en testnets. Ofrece herramientas para simular la red, depurar código y automatizar tareas, facilitando el desarrollo de aplicaciones descentralizadas (dApps) con mayor eficiencia y seguridad
Conclusión para QAs con Experiencia:
La transición al testing de blockchain requiere una expansión de las habilidades de QA existentes. Si bien los principios fundamentales del testing siguen siendo relevantes, la comprensión de la arquitectura descentralizada, los smart contracts y los mecanismos de consenso es vital. Al dominar estas nuevas áreas y utilizar las herramientas adecuadas, los QAs experimentados pueden asegurar la calidad y la seguridad de las innovadoras aplicaciones basadas en blockchain.
