Cadena cruzada explicada: desafío técnico – DINNGO

Como mencionamos en Current Landscape, varios proyectos apuntan a lograr la interoperabilidad mediante la implementación de una solución general. Sin embargo, estas soluciones aún están en desarrollo. En lugar de confiar en que se hagan, propusimos una estructura para proporcionar interoperabilidad para dApp haciendo que las transacciones que cambian de estado se ejecuten simultáneamente.

blockchain se puede considerar como una base de datos que se mantiene y ejecuta de forma descentralizada. En un sistema de base de datos, una transacción se define haciendo coincidir las propiedades de ACID, Atomicidad, Consistencia, Aislamiento y Durabilidad. Atomicity representa la serie indivisible e irreducible de operaciones de bases de datos que ocurren todas o no ocurre nada. La coherencia representa que cualquier transacción solo debe cambiar los datos afectados de una manera permitida, para garantizar que no se violen las restricciones de la base de datos. El aislamiento describe que las transacciones no deberían afectar la ejecución del otro. La durabilidad garantiza que el resultado de las transacciones comprometidas debe sobrevivir de forma permanente.

Dado que cada blockchain es una base de datos independiente. Mientras intentamos realizar transacciones y coordinarnos entre diferentes cadenas, su diseño original puede garantizar la consistencia, el aislamiento y la durabilidad. La atomicidad es la única propiedad que requiere restricciones adicionales.

Una sola transacción solo puede afectar el estado en una sola cadena de bloques. Por lo tanto, cuando realizamos la operación entre cadenas plurales, se requieren múltiples transacciones para dar suficiente potencia. En este caso, necesitamos combinar varias transacciones que se encuentran en diferentes cadenas en una sola. En otras palabras, ¿cómo garantizamos la atomicidad de estas transacciones?

Bitcoin es uno de los protocolos de blockchain más representativos. Aunque el desarrollo de su protocolo aún está activo, Bitcoin se limita a manejar funciones complejas debido a su concepto clave de simplificar la estructura para cumplir el propósito de un sistema de pago. La funcionalidad de Bitcoin se implementa mediante un sistema de secuencias de comandos, que es un sistema simple basado en la pila. Para satisfacer las necesidades de producir pagos condicionales para diferentes servicios, Hash Time Locked Contract puede otorgar condiciones adicionales mediante el uso de hashlocks y timelocks.

Se introduce el Hash Time Locked Contract (HTLC) para lograr la implementación de Lightning Network. El propósito de un HTLC es permitir un estado global en múltiples nodos a través de hashes. bip-0199 describe un script para la negociación generalizada de contratos fuera de la cadena implementada por HTLC.

La transacción HTLC es una transacción que puede canjearse de dos maneras: Hashlock y Timelock. Hashlock se realiza a través de una función hash. El casillero bloquea la transacción por un valor hash, mientras que el solucionador necesita proporcionar la semilla correspondiente al valor hash. La semilla se llama preimagen, que puede considerarse como la llave de la cerradura. Timelock no requiere información adicional para resolver. Se desbloqueará cuando expire el tiempo predefinido. Por lo tanto, el destino del bloqueo de tiempo suele ser el remitente, lo que desencadena un proceso de reembolso.

Bitcoin

Como se menciona en bip-0199, HTLC se implementa a través de una serie de operaciones de script. Para los operadores, hay varias opciones en la implementación de Bitcoin. La función de hash puede ser RIPEMD-160, SHA-1, SHA-256, HASH-160 o HASH-256. Para canjear la transacción HTLC, el gastador debe proporcionar la preimagen para el hashlock como la clave para resolver el rompecabezas de hash. Otra forma es esperar hasta que expire el bloqueo de tiempo definido.

Además de Bitcoin

Si bien el mecanismo se propone en Bitcoin, otras cadenas pueden soportarlo de otras maneras, como la implementación de un contrato inteligente. Tomemos Ethereum como ejemplo, podemos escribir un contrato simple para simular el comportamiento de HTLC.

El siguiente código ilustra una implementación básica de HTLC.

El contrato implementa un HTLC que puede manejar ether. Los tokens ERC20 también se pueden aplicar mediante algunas modificaciones menores.

A través de la implementación de HTLC, se puede implementar un conjunto de transacciones atómicas como:

tx_1: Alice -> Bob hashlock (p_A) timelock (t_1) tx_2: Bob -> Alice hashlock (p_A) timelock (t_2)

Pensilvania es una preimagen proporcionada por Alice. t_1 y t_2 son el tiempo de vencimiento que los remitentes correspondientes pueden reembolsar la transacción. La secuencia de ejecución se puede separar en varias fases: liquidar, canjear y reembolsar.

Alice creó tx_1 con hashlock (p_A) y Timelock (t_1). La transacción luego se transmite a la red. Alice proporcionó el hashlock (p_A) a Bob. Bob reconoció que tx_1 fue transmitido. hashlock (p_A) y timelock (t_2) crear tx_2 y transmitirlo Darse cuenta de t_1 debería ser mayor que t_2Alice reveló Pensilvania y reclamó los fondos de tx_2;Como Pensilvania fue revelado, Bob pudo reclamar los fondos de tx_1 también. Desde eso t_1 es mayor que t_2, Bob debería tener tiempo para realizar la redención. t_2 expirado, Bob podría reembolsar tx_2 para recuperar sus fondos. Alice también podría reembolsar después de t_1 expira

Cuando tx_2 es redimido por Alice, Bob puede tener suficiente información para canjear tx_1. Por otro lado, si Alicia no revela Pensilvania, Bob no puede obtener los fondos de tx_1. Esto satisface la regla de la atomicidad, que todas las operaciones ocurren o no ocurre nada. Tenga en cuenta que el mecanismo anterior no requiere tx_1 y tx_2 estar ubicado en la misma cadena. El único requisito es que la función de hashlock de hashlock sea la misma, por lo que la preimagen revelada Pensilvania se puede aplicar para desbloquear lo mismo hashlock (p_A). Por ejemplo, Bitcoin admite RIPEMD-160, SHA-1, SHA-256, HASH-160 y HASH-256. Ethereum es compatible con Keccak-256 (SHA-3), SHA-256 y RIPEMD-160. Al elegir SHA-256 o RIPEMD-160, tanto Bitcoin como Ethereum pueden admitir el mismo hashlock. En este caso, se logra un conjunto de transacciones atómicas de cadena cruzada.

Aunque todo parece perfecto, el mecanismo todavía tiene algunos problemas cuando se aplica a un uso práctico.

Retrasar la redención

Recordemos el conjunto de transacciones de Alice y Bob.

tx_1: Alice -> Bob hashlock (p_A) timelock (t_1) tx_2: Bob -> Alice hashlock (p_A) timelock (t_2)

Como mencionamos anteriormente, cuando se realiza la redención, Alice es quien puede decidir si el conjunto de transacciones se ejecuta o no.

Coincidencia de pedidos

Los pedidos coincidentes se refieren a cómo los intercambios emparejan metódicamente los pedidos de compradores y vendedores a precios compatibles. Si un usuario quiere comprar una cantidad de criptomonedas y otro quiere vender al mismo precio, sus pedidos coinciden y se realiza un intercambio. Sin embargo, el receptor debe determinarse cuando se crea una operación. Esta es la razón por la cual se les pide a los usuarios que firmen transacciones después de que su pedido coincide, lo que les parece bastante molesto.

Solución común

Teniendo en cuenta que la preimagen debería ser capaz de resolver los HTLC correspondientes que se crean en diferentes cadenas, estas cadenas deben admitir una función de hashing común. Es un problema difícil de resolver cuando intentamos extender la cadena de soporte en el sistema. A medida que el sistema crece, la intersección de la función de hash se vuelve más pequeña.

Costo de tiempo y costo de tarifa

Para garantizar que cada transacción se base adecuadamente en otra, cada transacción debe colocarse en la cadena antes de que puedan reconocerse y coincidir. El proceso de establecimiento requerirá mucho tiempo en la mayoría de las cadenas.

Otro problema es el costo de la tarifa. Cada orden de colocación requiere una liquidación de transacción real. Por lo tanto, el usuario tiene que pagar la transacción de cada pedido en cada cadena correspondiente, incluso si no coinciden.

Junto con la aclaración de los desafíos, el concepto de Portus se vuelve claro.

En nuestro próximo artículo, compartiremos el resumen de la solución. Manténganse al tanto.