Zcash (ZEC) es una criptomoneda centrada en mantener ante toda situación máxima seguridad, privacidad e incluso anonimato de sus usuarios, usando para ello tecnología criptográfica de primer nivel.
¿Qué es Zcash?
Zcash (ZEC) es una criptomoneda descentralizada de código abierto que garantiza la privacidad y la transparencia selectiva de las transacciones. Los pagos de monedas de Zcash se publican en una cadena de bloques pública, pero los datos del remitente, el destinatario y el monto de la transferencia son confidenciales.
Esta criptomoneda se basa en el protocolo de Bitcoin, pero tiene su propia blockchain y criptomoneda. Además, a diferencia del Bitcoin, está pensada para ser privada y completamente anónima. Esto es posible gracias al uso de Protocolos de Conocimiento Cero (ZKP). Gracias a este sistema, es posible confirmar las transacciones sin revelar información adicional, haciendo que el uso de esta moneda sea totalmente anónimo.
Inicios del Proyecto
Los inicios del proyecto nos llevan al año 2014, y el trabajo conjunto de Matthew D. Green, así como los estudiantes Ian Miers y Christina Garman. Todos ellos pertenecientes la Universidad Johns Hopkins. Ellos fueron quienes diseñaron el Protocolo Zerocoin. Este proyecto nació con la finalidad de mejorar la privacidad y el anonimato y el anonimato del Bitcoin. Sin embargo, su funcionamiento tenía varios puntos de fallos, especialmente el alto costo computacional que agregaba al Bitcoin. Pese a ello, el protocolo fue implementado en monedas como ZeroVert (ZER) y Zcoin (ZXC) de forma exitosa.
Más tarde y con el fin de solucionar varios de los problemas de Zerocoin, se presentó el Protocolo Zerocash. La principal diferencia entre Zerocoin y Zerocash, es que este ultimo hace uso de los zk-SNARKs. Esto con el fin de aumentar el rendimiento del protocolo y disminuir drásticamente su coste computacional. Ante este hecho, Green comentó que:
Gracias al nuevo protocolo de Zerocash, a diferencia de Zerocoin, los usuarios pueden hacer pagos directos entre sí utilizando un protocolo criptográfico mucho más eficiente que oculta no solo el origen sino también el monto del pago.
El proyecto Zcash, inició como un fork de Bitcoin al que se le agregó el soporte al protocolo Zerocash. Finalmente, se anunció oficialmente su lanzamiento, el 20 de enero de 2016 por Zooko Wilcox-O’Hearn. Actualmente, la versión de Zcash es llamada con el nombre código, Sapling y difiere enormemente del código del Bitcoin.
¿Cómo funciona Zcash?
Zcash tiene dos tipos de direcciones: privadas (direcciones z) o transparentes (direcciones t). Las direcciones privadas comienzan con una «z», y las direcciones transparente comienzan con una «t».
Una transacción de z a z aparece en el explorador de bloques, por lo que se sabe que ocurrió y que las tarifas se pagaron. Pero las direcciones, el monto de la transacción y el campo memo están encriptados y no son visibles públicamente. Esto es posible mediante el uso de protocolos de conocimiento cero. Un trabajo que es posible gracias al uso de las zk-SNARKs.
Así por ejemplo, el propietario de una dirección puede optar por revelar la dirección z y los detalles de la transacción con terceros de confianza. Para ellos, hace uso de claves de visualización y divulgación de pagos. De esta forma, se puede habilitar la opción de visualización a terceros de confianza, con fines de auditoría. Por otra parte, las transacciones entre dos direcciones transparentes (direcciones t) funcionan igual que Bitcoin.
A pesar de tener direcciones distintas, ambos tipos de direcciones Zcash son interoperables. Los fondos se pueden transferir entre direcciones z y direcciones t. Sin embargo, es importante que los usuarios entiendan las implicaciones de privacidad de proteger o desproteger información a través de estas transacciones.
Características y funcionalidades de Zcash
Zcash cuenta con algunas muy interesantes características entre las que destacan:
- Transacciones de bajo costo. Las transacciones tienen costos cercanos a los 0,0001 ZEC.
- Dirección y privacidad de la transacción. Zcash ofrece dos tipos de direcciones: privadas y transparentes. La transacciones de direcciones privadas no son visibles públicamente, mientras que las transparentes si. Ambos tipos de direcciones sin interoperables.
- Memorandos encriptados. Otra funcionalidad de Zcash es la capacidad de enviar mems encriptados. Esto es útil para transmitir mensajes, o para asegurar el cumplimiento con la regla de «Viaje» de la Ley de Secreto Bancario.
- Claves de visualización. Esta caracteristicas permite a los propietarios de Zcash habilitar auditorías en sus cuentas.
- Divulgación de pago. El remitente o el destinatario de una transacción puede revelar detalles específicos de la transacción a terceros. Esto según sea necesario para una auditoría.
- Vencimiento de la transacción. Zcash admite la caducidad de la transacción para minimizar el impacto de una transacción no explotada. De forma predeterminada, una transacción caducará y los fondos no serán gravados si la transacción no se extrae después de 50 minutos (20 bloques).
- Transacciones multi signatura. Zcash admite transacciones que requieren varias firmas. Esto significa que una transacción puede requerir que dos o más partes acepten la transacción antes de que se envíen los fondos. Sin embargo, las transacciones de firma múltiple son transparentes y no se pueden hacer privadas.
zk-SNARKs, la base del funcionamiento anónimo de Zcash
El acrónimo zk-SNARKs significa «Argumento de conocimiento no interactivo sucinto de conocimiento cero». Este se refiere, a la construcción de una prueba donde se puede demostrar la posesión de cierta información, sin revelar el secreto. Todo ello, sin que exista ninguna interacción entre el probador y el verificador. Shafi Goldwasser es la mente maestra detrás de este modelo de pruebas criptográficas.
Los zk-SNARKs son construidos en base al funcionamiento de un Protocolo de Conocimiento Cero (ZKP). La principal característica de los zk-SNARKs es que su coste computacional es muy reducido. Esto significa que su generación y verificación es muy eficiente, lo que ayuda a la escalabilidad.
El acrónimo de zk-SNARKs se puede deconstruir de la siguiente forma:
- Sucinto. Significa que los hash (pruebas) son muy pequeños en comparación con la duración del proceso real requerido para crearlos.
- No interactivo. En este tipo de sistemas, normalmente no existe interacción entre las partes de una transacción. Además, gracias a la propiedad de «verificador público», no es necesario interactuar de nuevo, para su verificación en el tiempo.
- Argumentos. Significa que el verificador solo está protegido contra probadores limitados computacionalmente. Los proveedores con suficiente poder de cómputo pueden crear pruebas / argumentos sobre afirmaciones incorrectas. Aunque esto es bastante improbable debido al poder computacional necesario para lograrlo.
- Conocimiento cero. Nadie dentro del sistema conoce el secreto, solo están seguros de que el mismo existe. En este caso, nadie tiene información sobre la transacción, pero están seguros que se ha realizado de forma correcta.
Equihash, un algoritmo PoW distinto, para una moneda distinta
Zcash originalmente mantenía el algoritmo SHA-256 heredado del Bitcoin. Sin embargo, este se cambió en 2014 a favor de Equihash. Este es un algoritmo de prueba de trabajo ideado por Alex Biryukov y Dmitry Khovratovich. Está basado en una ciencia computacional y concepto criptográfico denominado Generalized Birthday Problem (o Problema del Cumpleaños Generalizado).
Este problema define que la probabilidad de que en un conjunto de 23 personas existe una probabilidad del 50,7% de que al menos dos de ellas cumplan año el mismo día. Una situación que a simple vista no tiene sentido, ya que cualquier persona pensaría que la probabilidad es mucho más baja. Es por eso, que a este dilema también se le conoce como la Paradoja del Cumpleaños.
La razón para su elección, es que Equihash proporciona una verificación muy eficiente. Esta situación mostró ser ser importante en el futuro para clientes ligeros en dispositivos de poca potencia o para implementar un cliente Zcash dentro de Ethereum. Por otro lado, Equihash es resistente a la minería especializada con ASIC y FPGA. Esto debido a la alta demanda de memoria que tiene el algoritmo. Ante esta situación sus desarrolladores comentaron que:
Esto se debe a que el Problema del Cumpleaños Generalizado ha sido ampliamente estudiado por los científicos informáticos y criptógrafos, y Equihash está relacionado de cerca al Problema del Cumpleaños Generalizado. Es decir: nos parece que una optimización exitosa de Equihash sería probablemente también una optimización del Problema del Cumpleaños Generalizado.
Sistema de Recompensas de los Fundadores
En Zcash existe algo llamado la Recompensa de los Fundadores. Este permite que el 10% de la recompensa de la minería se distribuya de manera equitativa entre todas las partes implicadas en la Electric Coin Company. Desde sus fundadores e inversores hasta empleados y asesores. Permitiendo financiar a la empresa y que por supuesto, continúen su ardua labor de promover y mejorar las características de Zcash.
Aunque se debe mencionar que esto solo dura cuatro años, lo que quiere decir que a partir del año 2020, los mineros que mantienen el blockchain podrán finalmente recibir el 100% de la recompensa por su trabajo.
Diferencias entre Zcash y Bitcoin
En principios las diferencias entre Bitcoin y Zcash son mínimas. Zcash se alimenta de muchos aportes que se dan en el desarrollo de Bitcoin. Sin embargo, hay unos sutiles cambios que apuntan a una mejora por parte de Zcash, entre los que se destacan:
- El uso de los zk-SNARKs para brindar privacidad y anonimato a Zcash. Esta última características en Bitcoin no es posible al 100% por Bitcoin es pseudo-anónimo.
- Zcash tiene un intervalo de producción de bloque mucho menor que el de Bitcoin. Más específicamente, Zcash produce un bloque cada 2,5 minutos, en comparación con los 10 minutos del Bitcoin.
- El tamaño de bloques de Zcash es de 2 MB, duplicando el del Bitcoin. Esto permite que el nivel de escalabilidad de Zcash sea mucho mayor que el de BItcoin. Todo ello sin poner en riesgo la seguridad y usando un mínimo de ancho de banda.
- Se ha adoptado un algoritmo de ajuste de dificultad algo más «sutil», basado en DigiShield.
- Otra diferencia marcada es una función de caducidad de las transacciones. Lo que quiere decir que si en un determinado tiempo la transacción no es procesada por los mineros, automáticamente se cancela. Con esto el monto es regresado al emisor sin problema alguno, logrando evitar perder criptomonedas cuando la blockchain se encuentre sobrecargada.
La última actualización NU5
Network Upgrade 5 o NU5 es la nueva (y la sexta) actualización de la red de Zcash. Además es una parte fundamental del lanzamiento de la suite de productos Halo Arc. Según el acuerdo con Zcash este proyecto está respaldado por Electric Coin Co y por Zcash Foundation. Asimismo, NU5 permite hacer más sencilla la implementación del protocolo Orchard y de las Direcciones Unificadas aportando un soporte completo. Además, representa la evolución continua de la pila tecnológica zk-SNARK y llevará a Zcash al sistema de prueba Halo, permitiendo de esta forma eliminar la necesidad de las configuraciones de confianza y actualizando también de esta manera la criptografía del protocolo.
En cuanto a las nomenclaturas para esta y para las futuras actualizaciones de la red Zcash, cabe reseñar que éstas han cambiado de un sistema basado en alias a un sistema numérico. De esta manera se busca aportar claridad y consistencia al proyecto de cara al futuro.
Nuevas mejoras de NU5
Network Upgrade 5 creará una versión nueva de Zcashd, el nodo de consenso para Zcash. De esta forma se incluirá soporte para
- ZIP 216: Necesita codificaciones canónicas de puntos Jujub. Además corrige el error de implementación de las reglas de consenso de Sapling. También rechaza las representaciones no canónicas de los puntos Jubjub.
- ZIP 224: Incluye el protocolo blindado de Orchard. Viene con direcciones de pago y claves de gasto susceptibles de mejoras futuras de escalabilidad. También se crean nuevos pools con conjuntos privados separados en las acualizaciones principales de la red para poder aumentar la seguridad de la base monetaria.
- ZIP 225: Añade un formato nuevo de transacción peer-to-peer pensado para añadir soporte de los elementos de datos requeridos para el protocolo Orchard. Asimismo, el nuevo formato de transacción sirve para definir regiones mejor delimitadas del formulario serializado a fin de servir a los diferentes grupos de fondos existentes. Además añade y describe una nueva región que incluye elementos específicos de Orchard.
- ZIP 239: La siguiente propuesta altera completamente el protocolo de red peer-to-peer añadiendo un tipo nuevo de mensaje inv que se usa para anunciar las transacciones V5. De esta forma se asegura que los nodos de la red no permitan realizar el ataque de denegación de servicio a los monederos que se encuentran enviando transacciones V5 al mempool.
- ZIP 244: Se trata de una actualización que define un algoritmo nuevo de compendio de transacciones para la actualización de la red NU5 y las posteriores conn la finalidad de introducir diferentes identificadores de transacciones no maleables que se comprometan con los diferentes datos de las transacciones, excepto con los certificados de validez de éstas.
- ZIP 316: Finalmente, en este punto introducir las direcciones unificadas o UA, un formato de dirección de Zcash a prueba de futuro realmente interesante porque aumenta la facilidad de interoperabilidad, mejora la usabilidad y soporta el blindaje de Zcash por defecto. Las UA permiten que Zcash sea más sencillo de usar al eliminar toda la complejidad de los diferentes tipos de direcciones. Así, simplifica la experiencia de usuario y aumenta la interoperabilidad entre las aplicaciones transparentes y blindadas.