Ver Documento Original aquí
1. Introducción
Motivación
Cardano es un proyecto que comenzó en 2015 como un esfuerzo para cambiar la forma en que se diseñan y desarrollan las criptomonedas. El objetivo general, más allá de un conjunto particular de innovaciones, es proporcionar un ecosistema más equilibrado y sostenible que responda mejor a las necesidades de sus usuarios, así como a las de otros sistemas que buscan la integración.
En el espíritu de muchos proyectos de código abierto, Cardano no comenzó con una hoja de ruta completa ni siquiera con un libro blanco autorizado. En lugar de ello, adoptó una colección de principios de diseño, mejores prácticas de ingeniería y vías de exploración. Estos incluyen los siguientes:
-
Separación de la contabilidad y la computación en diferentes capas
-
Implementación de componentes principales en código funcional altamente modular
-
Pequeños grupos de académicos y desarrolladores que compiten con la investigación revisada por pares.
-
Uso intensivo de equipos interdisciplinarios, incluyendo el uso temprano de expertos de InfoSec.
-
Rápida iteración entre los informes técnicos, la implementación y las nuevas investigaciones necesarias para corregir los problemas descubiertos durante la revisión.
-
Aprovechamiento de la capacidad de actualizar los sistemas desplegados después de la instalación sin destruir la red
-
Elaboración de un mecanismo de financiación descentralizado para la labor futura
-
Una visión a largo plazo para mejorar el diseño de las criptomonedas para que puedan trabajar en dispositivos móviles con una experiencia de usuario razonable y segura.
-
Acercar a los grupos de interés a las operaciones y al mantenimiento de su criptomoneda
-
Reconocer la necesidad de contabilizar múltiples activos en el mismo libro mayor.
-
Abstracción de transacciones para incluir metadatos opcionales a fin de ajustarse mejor a las necesidades de los sistemas heredados.
-
Aprender de las casi 1.000 criptomonedas alternativas abrazando características que tienen sentido
-
Adoptar un proceso basado en estándares inspirado por la Internet Engineering Task Force utilizando una base dedicada para bloquear el diseño del protocolo final.
-
Explorar los elementos sociales del comercio
-
Encontrar un término medio saludable para que los reguladores interactúen con el comercio sin comprometer algunos de los principios básicos heredados de Bitcoin.
A partir de este conjunto de ideas no estructuradas, los directores que trabajaban en Cardano comenzaron a explorar la literatura sobre criptomonedas y a construir un conjunto de herramientas de abstracciones. El resultado de esta investigación es la extensa biblioteca de documentos del IOHK, numerosos resultados de encuestas como esta reciente descripción general del lenguaje de programación, así como una Ontología de Contratos Inteligentes y el proyecto Scorex. Las lecciones produjeron una apreciación del crecimiento inusual y a veces contraproducente de la industria de las criptomonedas
Primero, a diferencia de protocolos exitosos como TCP/IP, hay pocas capas en el diseño de criptomoneda. Ha habido un deseo de preservar una sola noción de consenso en torno a los hechos y acontecimientos registrados en un único libro, independientemente de si tiene sentido o no.
Por ejemplo, Ethereum ha enfrentado enormes complejidades en el intento de convertirse en el ordenador mundial universal, pero sufre de preocupaciones triviales que potencialmente destruyen la capacidad del sistema para funcionar como un almacén de valor. ¿Debería el programa de todos ser un ciudadano de primera clase, independientemente de su valor económico, costo de mantenimiento o consecuencias regulatorias?
En segundo lugar, hay poca apreciación por los resultados previos en la investigación criptográfica convencional. Por ejemplo, la prueba de participación delegada de Bitshares podría haber generado números aleatorios de forma fácil y fiable utilizando el lanzamiento de monedas con entrega de salida garantizada, que es una técnica conocida desde la década de 1980 (véase el documento fundamental de Rabin y Ben-Or)
Tercero, la mayoría de las criptomonedas alternativas (con algunas notables excepciones como Tezos) no han hecho ningún arreglo para futuras actualizaciones. La capacidad de empujar con éxito una bifurcación blanda o dura (soft or hard fork) es fundamental para el éxito a largo plazo de cualquier criptomoneda.
Como corolario, los usuarios de las empresas no pueden comprometer millones de dólares en recursos para protocolos en los que la hoja de ruta y los actores que los respaldan son efímeros, mezquinos o radicalizados. Tiene que haber un proceso eficiente a través del cual se pueda formar un consenso social en torno a una visión para la evolución del protocolo subyacente. Si este proceso es enormemente oneroso, la fragmentación podría dividir a la comunidad.
Por último, el dinero es, en última instancia, un fenómeno social. En el esfuerzo por anonimizar y desintermediar a los actores centrales, Bitcoin y sus contemporáneos también han descartado la necesidad de identidades, metadatos y reputación estables en las transacciones comerciales. La adición de estos datos a través de soluciones centralizadas elimina la auditabilidad, la disponibilidad global y la inmutabilidad, que es el objetivo de utilizar una cadena de bloques (blockchain).
Los sistemas financieros heredados, como los compuestos por SWIFT, FIX y ACH, son ricos en metadatos transaccionales. No basta con saber cuánto valor se mueve entre cuentas, la regulación a menudo requiere la atribución de los actores involucrados, información de cumplimiento, reporte de actividades sospechosas y otros registros y acciones. En algunos casos, los metadatos son más importantes que la transacción.
Por lo tanto, parece razonable deducir que la manipulación de los metadatos podría ser tan perjudicial como la falsificación de moneda o la reescritura de la historia de las transacciones. No hacer concesiones a los actores que quieren incluir voluntariamente estos campos parece contraproducente para la adopción y la protección del consumidor.
Fin de la estadía
La agregación de nuestra exploración de principios del espacio de criptomonedas son dos colecciones de protocolos. Respectivamente, una prueba de participación de probada seguridad (A) (B) basada en criptomoneda llamada Cardano Settlement Layer (CSL) (Capa de Contabilidad) y un conjunto de protocolos llamados Cardano Computation Layer (CCL) (Capa de Computación).
Nuestro diseño pone énfasis en acomodar los aspectos sociales de las criptomonedas, construir capas separando la contabilidad del valor de la computación compleja y abordar las necesidades de los reguladores dentro del alcance de varios principios inmutables. Además, cuando es sensato, intentamos examinar los protocolos propuestos a través de la revisión por pares y comprobar el código con respecto a las especificaciones formales.
Prueba de participación
El uso de la prueba de participación para una criptomoneda es una opción de diseño muy debatida, sin embargo, debido a que agrega un mecanismo para introducir el voto seguro, tiene más capacidad para escalar, y permite esquemas de incentivos más exóticos, decidimos adoptarla.
Nuestro protocolo de prueba de participación se llama Ouroboros y ha sido diseñado por un equipo extremadamente talentoso de criptógrafos de cinco instituciones(2) académicas liderado por el Profesor Aggelos Kiayias de la Universidad de Edimburgo. La innovación central que aporta más allá de la seguridad probada mediante un riguroso modelo criptográfico es un diseño modular y flexible que permite la composición de muchos protocolos para mejorar la funcionalidad.
Esta modularidad permite características tales como delegación, cadenas laterales, puntos de control suscriptibles, mejores estructuras de datos para clientes ligeros, diferentes formas de generación de números aleatorios e incluso diferentes supuestos de sincronización. A medida que una red pasa de tener miles a millones e incluso miles de millones de usuarios, los requisitos de su algoritmo de consenso también cambiarán. Por lo tanto, es vital tener suficiente flexibilidad para acomodar estos cambios y por lo tanto, asegurar el futuro del corazón de una criptomoneda.
Elementos sociales del dinero
Las criptomonedas son un buen ejemplo del componente social del dinero. Cuando se restringe el análisis únicamente a la tecnología, hay poca diferencia entre Bitcoin y Litecoin y aún menos entre Ethereum y Ethereum Classic. Sin embargo, tanto Litecoin como Ethereum Classic mantienen grandes capitalizaciones de mercado y comunidades robustas y dinámicas, así como sus propios mandatos sociales.
Se puede argumentar que gran parte del valor de una criptomoneda se deriva de su comunidad, de la forma en que utiliza la moneda y de su nivel de compromiso con la evolución de la moneda. Además, monedas como Dash han integrado sistemas directamente en el protocolo para involucrar a su comunidad en la decisión de lo que debería ser una prioridad a desarrollar y financiar.
La gran diversidad de las criptomonedas también proporciona evidencia de sus elementos sociales. Los desacuerdos sobre la filosofía, la política monetaria o incluso entre los principales desarrolladores conducen a la fragmentación y bifurcaciones (forks). Sin embargo, a diferencia de sus contrapartes en criptomonedas, las monedas fiat de las super potencias tienden a sobrevivir a los cambios políticos y a los desacuerdos locales sin una crisis monetaria o un éxodo masivo.
Por lo tanto, parece que hay elementos de los sistemas heredados que faltan en la industria de criptomonedas. Argumentamos -y hemos inculcado en la hoja de ruta de Cardano- que los usuarios de un protocolo necesitan incentivos para comprender el contrato social que hay detrás de su protocolo y tienen la libertad de proponer cambios de una manera productiva. Esta libertad se extiende a todos los aspectos de un sistema de intercambio de valores, desde decidir cómo deben regularse los mercados hasta qué proyectos deben financiarse. Sin embargo, no puede ser intermediada a través de actores centralizados ni requerir alguna credencial especial que pueda ser cooptada por una minoría bien financiada.
Cardano implementará un sistema de protocolos de superposición construido sobre CSL para acomodar las necesidades de sus usuarios.
En primer lugar, independientemente del éxito de una venta en masa para el arranque del desarrollo , los fondos finalmente se disiparán. Por lo tanto, Cardano incluirá un fideicomiso descentralizado financiado con fondos provenientes de la inflación y las comisiones de transacción que disminuyen de manera monótona.
Cualquier usuario debe ser elegible para solicitar fondos del fideicomiso mediante un sistema de votación y las partes interesadas de CSL votan sobre quién se convierte en beneficiario. El proceso crea un bucle de retroalimentación productivo que se observa en otras criptomonedas con sistemas de tesorería/fideicomiso, como Dash, al iniciar una conversación sobre quién debe y quién no debe recibir fondos.
Los debates sobre la financiación obligan a establecer una relación entre los objetivos a corto y largo plazo, el contrato social de la criptomoneda, las prioridades y la creencia en la creación de valor con propuestas concretas. Esta conversación significa que la comunidad está constantemente evaluando y debatiendo sus creencias contra posibles hojas de ruta.
En segundo lugar, nuestra esperanza es que Cardano finalmente incluya un sistema formal, basado en una blockchain, para proponer y votar tanto sobre bifurcaciones blandas como las duras (soft and hard forks). Bitcoin con su debate sobre el tamaño de los bloques, Ethereum con la bifurcación DAO, y muchas otras criptomonedas además de haber atravesado largas y, en casos frecuentes, discusiones no resueltas sobre la dirección técnica y moral de la base de código.
Se puede y se debe argumentar que muchos de estos desacuerdos, y la fractura de la comunidad que resulta cuando se toman medidas, son el resultado directo de la falta de procesos formales para debatir el cambio.
¿Dónde se puede convencer a los usuarios de Bitcoin para que adopten Segregated Witness? ¿Cómo deben medir los principales desarrolladores de Ethereum el sentimiento de la comunidad para rescatar al DAO? Si la comunidad se fractura, ¿está la criptomoneda dañada irreparablemente?
En el peor de los casos, la autoridad moral para actuar podría recaer simplemente en quienquiera que tenga los desarrolladores, relaciones de infraestructura y el dinero, y no en los mejores deseos de la gran mayoría de la comunidad. Además, si una gran parte de la comunidad es inaccesible o no está comprometida debido a los malos incentivos(4), ¿cómo se puede saber realmente si sus actos son legítimos?
Las criptomonedas propuestas como Tezos proporcionan un modelo interesante para examinar donde un protocolo de criptomoneda es tratado como una constitución que contiene tres secciones (Transacción, Consenso y Red) con un conjunto de reglas y procesos formales para actualizar la constitución. Sin embargo, queda mucho trabajo por hacer con incentivos y sobre cómo modelar y cambiar exactamente una criptomoneda con un lenguaje formal.
El uso de métodos formales, especificaciones comprensibles por máquina y la fusión de una tesorería con este proceso de incentivos financieros se están explorando como posibles vías de inspiración. En última instancia, sólo la capacidad de proponer un cambio de protocolo de forma transparente y libre de censura con el voto en cadena debería mejorar el proceso, incluso si no se pueden diseñar soluciones más elegantes.
Diseño en Capas - Capa de Contabilidad (Settlement Layer) Cardano
Cuando se diseñan grandes protocolos y lenguajes, uno no debe mirar hacia el futuro, sino hacia el pasado. La historia ofrece una letanía de ejemplos de grandes ideas que son perfectas sobre el papel, pero que de alguna manera no han sobrevivido, como los estándares de Interconexión de Sistemas Abiertos. La historia también proporciona accidentes felices que han sufrido desde TCP/IP hasta JavaScript.
Algunos principios extraídos de una visión histórica son los siguientes:
1- No puedes predecir el futuro, así que construye un margen de maniobra.
2- La complejidad es agradable sobre el papel, pero la simplicidad suele ganar
3- Demasiados cocineros estropean el caldo
4- Una vez que se establece un estándar, es probable que se mantenga, independientemente de si es subóptimo o no.
5- Las malas ideas pueden convertirse en buenas si hay voluntad.
Cardano es un sistema financiero que acepta su naturaleza social. Habrá una tremenda necesidad de flexibilidad y la capacidad de abordar la complejidad arbitraria en la transacción de un usuario en particular. Si tiene éxito, se necesitarán enormes recursos computacionales, de almacenamiento y de red para acomodar millones de transacciones simultáneas.
Sin embargo, no tenemos un Robin Hood digital y descentralizado para tomar de los nodos ricos y dárselo a los pobres con el fin de lograr una red justa. Tampoco podemos darnos el lujo de confiar en la beneficencia humana para sacrificarnos altruísticamente por el bien mayor de la red. Por lo tanto, el diseño de Cardano toma prestado del TCP/IP el concepto de separación de preocupaciones.
Las cadenas de bloques son, en última instancia, bases de datos que ordenan hechos y eventos con garantías de tiempo e inmutabilidad. En el contexto del dinero, ordenan la propiedad de los activos. Agregar computación compleja mediante el almacenamiento y la ejecución de programas es un concepto ortogonal. ¿Queremos saber cuánto valor fue de Alice a Bob, o queremos involucrarnos en averiguar toda la historia detrás de la transacción y decidir cuánto enviar?
Es increíblemente tentador elegir esta última como lo ha hecho Ethereum porque es más flexible, pero viola los principios de diseño mencionados anteriormente. Descifrar la historia significa que un solo protocolo tiene que ser capaz de comprender eventos arbitrarios, guionar transacciones arbitrarias, permitir el arbitraje en casos de fraude e incluso potencialmente transacciones inversas cuando se disponga de nueva información.
Entonces uno tiene que tomar decisiones difíciles de diseño sobre qué metadatos almacenar para cada transacción. ¿Qué elementos de la historia detrás de la transacción de Alice y Bob son relevantes? ¿Son relevantes para siempre? ¿Cuándo podemos tirar algunos datos? ¿Esto viola la ley en algunos países?
Además, algunos cálculos son de naturaleza privada. Por ejemplo, al calcular el salario medio de los trabajadores de una oficina, no necesariamente querríamos filtrar cuánto gana cada persona. ¿Pero qué pasa si todos los cálculos son conocidos públicamente? ¿Qué pasa si esta publicidad sesga la orden de ejecución para perjudicar el resultado?
Por lo tanto, hemos elegido la posición de que la contabilidad del valor debe separarse de la historia detrás de por qué se movió el valor. En otras palabras, separación del valor del cálculo. Esta separación no significa que Cardano no apoyará contratos inteligentes. Por el contrario, al hacer explícita la separación, permite una flexibilidad significativamente mayor en el diseño, uso, privacidad y ejecución de contratos inteligentes.
La capa de valor se denomina Capa de Contabilidad de Cardano (Cardano Settlement Layer -CSL). Como el propósito es dar cuenta del valor, la hoja de ruta tiene los siguientes objetivos:
1- Soporta dos conjuntos de lenguajes de programación, uno para mover el valor y otro para mejorar el soporte del protocolo de superposición.
2- Proporcionar soporte para cadenas laterales(5) (sidechains) KMZ y se vincule con otras capas de contabilidad
3- Soporta múltiples tipos de firmas, incluyendo la resistencia a firmas cuánticas para una mayor seguridad.
4- Soporta múltiples activos emitidos por usuarios
5- Lograr una verdadera escalabilidad, lo que significa que a medida que más usuarios se unan, las capacidades del sistema aumentarán.
Programación (Scripting)
Comenzando con el lenguaje de programación, las transacciones entre direcciones en un libro de contabilidad (ledger) requieren alguna forma de programa para ejecutarse y ser probadas como válidas. Idealmente, uno no querría que Eva tuviera acceso al dinero de Alicia, ni que un programa mal diseñado enviara accidentalmente valor a una dirección muerta haciendo que los fondos fueran irrecuperables.
Los sistemas como Bitcoin proporcionan un lenguaje de programación extremadamente inflexible y draconiano en el que es difícil programar transacciones a medida y leer y entender. Sin embargo, la programabilidad general de lenguajes como Solidity introduce una extraordinaria cantidad de complejidad en el sistema y son útiles sólo para un grupo mucho más pequeño de actores.
Por ello, hemos decidido diseñar un nuevo lenguaje llamado Simon(6) en honor a su creador Simon Thompson y al creador de los conceptos que lo inspiraron, Simon Peyton Jones. Simon es un lenguaje específico que se basa en la composición de contratos: una aventura en ingeniería financiera.
La idea principal es que las transacciones financieras se componen generalmente de una colección de elementos(7) fundacionales. Si se reúne una tabla periódica de elementos financieros, entonces se puede proporcionar soporte para un conjunto arbitrariamente grande de transacciones compuestas que cubrirán la mayoría, si no todos, los tipos de transacciones comunes sin requerir programabilidad general.
La principal ventaja es que la seguridad y la ejecución pueden entenderse muy bien. Las pruebas pueden ser escritas para mostrar la corrección de las plantillas y agotar el espacio de ejecución de eventos de transacción problemáticos, como la creación de nuevo dinero de la nada o la maleabilidad de la transacción. En segundo lugar, se puede dejar en extensiones para añadir más elementos por medio de bifurcaciones blandas (soft forks) si se requiere una nueva funcionalidad.
Dicho esto, siempre habrá una necesidad de conectar CSL a protocolos de superposición, sistemas financieros heredados y servidores de propósito especial. Por lo tanto, hemos desarrollado Plutus como un lenguaje de contrato inteligente de propósito general y también como un lenguaje DSL de propósito especial para la interoperabilidad.
Plutus es un lenguaje funcional mecanografiado basado en conceptos de Haskell, que puede utilizarse para escribir programas de transacciones personalizados. Para CSL, se utilizará para transacciones complejas necesarias para añadir soporte para otras capas que necesitamos conectar, como nuestro esquema de cadenas laterales.
Cadenas laterales (Sidechains)
Con respecto a las cadenas laterales, Cardano apoyará un nuevo protocolo desarrollado por Kiayias, Miller y Zindros (cadenas laterales) KMZ) basado en resultados previos de pruebas de pruebas de trabajo (proof of proof of work). El diseño particular está más allá del alcance de este documento; sin embargo, el concepto permite el movimiento seguro y no interactivo de fondos desde CSL a cualquier capa de computación de Cardano u otra cadena de bloques que soporte el protocolo.
Las cadenas laterales de KMZ son la clave para encapsular la complejidad. Libros de Contabilidad (Ledgers) con requerimientos regulatorios, operaciones privadas, lenguajes de programación robustos y otras preocupaciones especiales son efectivamente cajas negras para CSL, sin embargo, el usuario de CSL obtendrá ciertas garantías sobre la contabilidad y la capacidad de recuperar fondos una vez que la computación esté completa.
Firmas
Para poder mover valor de manera segura de Alice a Bob, Alice necesita probar que tiene el derecho de mover los fondos. La forma más directa y fiable de llevar a cabo esta tarea es utilizar un esquema de firma de clave pública en el que los fondos se conectan a una clave pública y Alice controla una clave privada asociada.
Existen cientos de esquemas posibles con diferentes parámetros de seguridad y supuestos. Algunos se basan en problemas matemáticos conectados a curvas elípticas, mientras que otros están conectados a conceptos exóticos usando celosías.
El objetivo abstracto es siempre el mismo. Existe un problema difícil que no puede ser resuelto a menos que alguien tenga un pedazo secreto de conocimiento. Se dice que el poseedor de este conocimiento es el propietario del par de claves y debe ser la única entidad que tiene la capacidad de usarlo.
Hay dos grupos de preocupaciones a las que se enfrenta una criptomoneda al elegir un esquema de firma. En primer lugar, la seguridad a largo plazo del propio sistema. Algunos esquemas criptográficos utilizados en los años setenta y ochenta, como el DES, se han roto. Debe decidirse el período durante el cual se espera que sobreviva el régimen.
En segundo lugar, hay muchas empresas, gobiernos y otras instituciones que han preferido, o en algunos casos, han ordenado el uso de un esquema particular. Por ejemplo, la NSA mantiene el conjunto de protocolos de la Suite B. Existen estándares de ISO e incluso de grupos de trabajo del W3C sobre criptografía.
Si una criptomoneda elige un esquema de firma única, se ve obligada a aceptar que el esquema podría romperse en algún momento en el futuro y que al menos una entidad no puede utilizar la criptomoneda debido a restricciones legales o industriales. Sin embargo, una criptomoneda no puede soportar todos los esquemas de firma, ya que esto requeriría que cada cliente comprenda y valide cada esquema.
Para Cardano, decidimos empezar con la criptografía de curva elíptica, la curva Ed25519 en particular. También decidimos mejorar las bibliotecas existentes añadiendo soporte para billeteras HD utilizando las especificaciones del Dr. Dmitry Khovratovich y de Jason Law.(8)
Dicho esto, Cardano apoyará más esquemas de firma en el futuro. En particular, estamos interesados en integrar resistencia a firmas cuánticas computacionales en nuestro sistema. También estamos interesados en añadir SECP256k1 para mejorar la interoperabilidad con criptomonedas heredadas como Bitcoin.
Cardano ha sido diseñado con extensiones especiales que nos permitirán añadir más esquemas de firma a través de una bifurcación blanda (soft fork). Se añadirán cuando sea necesario y durante las principales actualizaciones previstas en la hoja de ruta (9)
Continuar Leyendo Parte de 2 de 5
Notas al Pie de Página
1: Ver la sección de Regulación para la lista.
2: Universidad de Connecticut, Universidad de Atenas, Universidad de Edimburgo, Universidad de Aarhus, Instituto de Tecnología de Tokio.
3: Esto también se conoce como un sistema de tesorería.
4: Ver ignorancia racional.
5: Ver Pruebas de Prueba de Trabajo No Interactivas de Kiayias, Zindros y Miller.
6: Los detalles específicos se publicarán en una próxima especificación. El lenguaje completo será soportado en la versión Shelley CSL planeada para el cuarto trimestre de 2017.
7: El proyecto ACTUS tiene una elaboración en profundidad.
8: Esta es la documentación para la Implementación de la Cartera HD de Cardano. Creemos que Cardano es la primera criptomoneda compatible con las billeteras HD Ed25519.
9: Ver cardanoroadmap.com.