Hydra es la solución de escalabilidad de segunda capa, que dará Cardano.
Por encima de esta primera capa, es posible crear una red casi independiente, una segunda capa. Se construye para escalar lo máximo posible y hacer que las transacciones sean rápidas y baratas.
El equipo de IOHK introdujo el modelo eUTxO (UTXO extendido), que permite la fragmentación del espacio de delegación, sin necesidad de fragmentar el propio libro mayor.
Es posible fragmentar el ledger, donde cada pool puede crear una nueva cabeza de Hydra, por lo que añadir más pools significa que se pueden añadir más cabezas. Así, añadiendo nuevas cabezas al protocolo, se puede conseguir un escalado casi lineal. Se han realizado simulaciones y los resultados son excelentes, donde cada cabeza de Hydra puede procesar alrededor de 1.000 TPS (transacciones por segundo). Así que con 1.000 pools, Cardano podría ser teóricamente capaz de escalar hasta 1 millón de TPS .
Hydra permite el escalado horizontal. Significa aumentar el rendimiento mediante la incorporación de nodos adicionales. Es más fácil que añadir hardware potente, ya que hay límites más considerables para la potencia equipos.
Hydra garantizará una baja latencia y un almacenamiento mínimo de datos por nodo.
Hydra también es capaz de ejecutar contratos inteligentes, para que los desarrolladores puedan construir fácilmente dapps y utilizar micropagos, votaciones y otras actividades.
Como la seguridad de la primera capa está garantizada por la blockchain y el consenso distribuido, decimos que las transacciones se procesan en la cadena. Los usuarios podrán transferir fondos a la segunda capa. Las transacciones en la segunda capa se procesan, por tanto, fuera de la cadena de bloques. La primera capa no verifica todas las transacciones que tienen lugar en la segunda capa.
Por un mecanismo especial se transfieren las monedas (o los contratos inteligentes) a la segunda capa, y así la cabeza de Hydra se abre. En la cabeza de Hydra, todos los participantes practican intercambios mediante transacciones. La primera capa no verifica estas transacciones. Una vez que se cierra la cabeza de Hydra, la blockchain sólo asumirá el último estado de transacciones válido de la segunda capa.
Canales de estado
Hydra utilizará canales de estado, que extiende el concepto de canales de pago. Las partes mantienen canales de estado, para llevar un estado común, donde son capaces de acordarlo, sin interacción con la blockchain.
Hydra no sólo se ocupa de la transferencia de fondos, sino también de la ejecución de contratos inteligentes. Por lo tanto, es necesario trabajar con estados. Por ejemplo, es posible crear un contrato inteligente en la primera capa y transferirlo a la cabeza de Hydra donde puede ser ejecutado.
Un contrato inteligente es un programa o secuencia de códigos que se ejecutan condicionalmente. Esto significa que una operación sólo se realiza si se ha producido un evento esperado. Sino, no se puede realizar otra operación. La ejecución de un contrato inteligente está impulsada por eventos. El contrato inteligente se encuentra en un determinado estado en todo momento, que va cambiando de forma condicional mientras esté activo y los eventos desencadenen los cambios.
El concepto de canales de estado no es nuevo y ya existen algunas implementaciones. Sin embargo, tienen algunas desventajas importantes. La mayor desventaja es que la infraestructura de la primera capa y el código de los contratos inteligentes, que se escriben para la infraestructura de la primera capa, no se pueden utilizar dentro de la segunda capa sin cambios. Estos cambios, que son necesarios para la transferencia de fondos y contratos inteligentes entre capas, pueden ser muy peligrosos.
Si bien el modelo UTxO se considera una forma muy segura de manejar fondos dentro de la blockchain, las soluciones actuales de segunda capa no son capaces de trabajar directamente con UTxO. Por lo tanto, las monedas se representan de una manera completamente diferente. Las segundas capas actuales pierden así un importante elemento de seguridad. Lo mismo ocurre con la ejecución de los contratos inteligentes, donde debe producirse una conversión de la representación de la información. Y esto puede ser muy peligroso.
Hydra simplifica significativamente las soluciones de segunda capa. Hydra es capaz de adoptar la solución de la primera capa. El modelo eUTxO y toda la infraestructura de contratos inteligentes de la primera capa, pueden ser utilizados dentro de Hydra. Las transacciones de Hydra funcionan directamente con eUTxO para cambiar la propiedad. Un contrato inteligente, que se despliega en la blockchain, puede ejecutarse tal cual en la cabeza de Hydra, y no hay necesidad de conversión de datos.
Básicamente, significa que el lenguaje de scripting del libro mayor subyacente es utilizado por los canales de estado. Hydra hereda el lenguaje de scripting de Cardano blockchain.
Para ver la diferencia más claramente, podemos echar un vistazo a Ethereum. Ethereum utiliza Solidity para escribir un contrato inteligente en la primera capa. Cuando el contrato va a ser transferido a la segunda capa debe ser convertido ya que la segunda capa no puede trabajar directamente con Solidity. Para permitir la conversión hay que adaptar el propio contrato inteligente de Solidity. El lenguaje de scripting de blockchain y el de la segunda capa difieren significativamente. Por lo tanto, la conversión es necesaria.
Los canales de estado permiten el procesamiento paralelo de las transacciones y los contratos inteligentes, que ocurre fuera de la cadena. Es posible abrir más cabezas de Hydra. Así que Hydra puede tener varias cabezas. Cada cabeza recién abierta representa una nueva unidad paralela. Una vez que se cierra un canal de estado, el estado de la cabeza puede ser absorbido sin problemas por la cadena de bloques. Es una tarea fácil y sencilla ya que se utiliza el mismo código de contrato inteligente dentro y fuera de la cadena. Incluso es posible crear un contrato inteligente en Hydra sin necesidad de registrarse en la blockchain. La blockchain es capaz de asumir el contrato inteligente y continuar con la ejecución on-chain.
El protocolo de la cabeza
Cualquier parte puede iniciar la creación de la cabeza de Hydra pidiendo a un conjunto de partes que se unan. Cada parte establece un canal con todas las demás partes. Si no es posible por cualquier motivo, se aborta la creación de la cabeza. Las partes intercambian material de clave pública a través de los canales establecidos. El material de clave pública se utiliza para la autenticación de las transacciones en la cadena relacionadas con la cabeza, ya que sólo los miembros de la cabeza pueden hacerlo. El material también se utiliza para la confirmación de eventos basados en múltiples firmas dentro de la cabeza.
El iniciador de la cabeza establece la cabeza mediante el envío de una transacción inicial a la cadena de bloques. Se crean tokens especiales que se asignan a todos los miembros de la cabeza. Así, las claves públicas de los miembros de la cabeza pueden vincularse con los tokens. En este punto, la máquina de estados se involucra y se encarga de la transferencia segura de UTxO desde la blockchain a la cabeza. El primer estado es el inicial. En este punto, todos los miembros de la cabeza pueden enviar UTxO a la cabeza. Si algún miembro de la cabeza no envía la transacción de confirmación, el estado pasa directamente de Inicial a Final y la cabeza no se abre. Supongamos que todos los miembros logran enviar la transacción de confirmación, así, los UTxOs se bloquean dentro de la blockchain para que los miembros de la Cabeza puedan trabajar con ellos. Los miembros de la cabeza pueden empezar a utilizar los UTxO dentro de la cabeza una vez que la máquina de estado cambie el estado a abierto. A partir de ese momento, los UTxOs comienzan a evolucionar fuera de la cadena.
En cualquier momento, cuando la cabeza está abierta, cualquier parte puede iniciar el cierre de la cabeza. La máquina de estado cambia el estado a Cerrado. Hay un periodo de impugnación durante el cual las partes proporcionan su estado final, que es su conjunto de UTxO. Una vez transcurrido el periodo de impugnación, la máquina de estados cambia el estado a Final. Del mismo modo, como al principio, la máquina de estado se encarga de la transferencia segura del conjunto de UTxO, que corresponde al estado final de "Head", de vuelta a la blockchain.
El protocolo "Head" no mantiene el historial de transacciones, esto es para minimizar el almacenamiento local de las partes. En lugar de mantener el historial, se generan constantemente instantáneas de UTxO. Siempre se selecciona un líder de instantáneas que ofrece su visión del estado confirmado. Otras partes confirman el estado mediante una firma y, como resultado, se genera una nueva instantánea. A diferencia del procesamiento asíncrono de transacciones, la instantánea se genera de forma secuencial. Una vez que se confirma una nueva instantánea, las partes podrían eliminar todas las transacciones que se han procesado y que forman parte de la nueva instantánea. El estado confirmado de la parte siempre está por delante de la última instantánea confirmada. Por tanto, no es necesario esperar a la confirmación de alguna transacción, para poder confirmar una nueva propuesta de instantánea. La instantánea refleja el estado final de la cabeza, que ha sido confirmada por todos los miembros de la cabeza.
GitHub: input-output-hk/hydra-poc
Evolución Cardano. Desarrollos en Cardano.