Intercambios atómicos Inter-cadena en Qtum

Qtum Español
6 min readFeb 11, 2019
Go to the profile of QtumX

QtumXFollow

Resumen

La incapacidad para realizar intercambios de inter-cadena es uno de los muchos problemas que afectan a la industria de blockchain. Restringe la aplicación de la tecnología blockchain. Entre todas las soluciones, HTLC (Hash Time Locked Contract) garantiza la atomicidad de las transacciones en inter-cadena, que tiene la mayor seguridad. Este artículo propone una implementación de HTLC en Qtum e ilustra un intercambio atómico de inter-cadena entre Qtum y Bitcoin.

Introducción

Los intercambios de inter-cadena atómicas [1] son una de las muchas soluciones de inter-cadena. Tiene las siguientes ventajas:

  • No se necesitan terceros. Ambas partes de un exchange de inter-cadena atómicas no necesitan confiar en un tercero para completar el intercambio.
  • El proceso es atómico. Dos transacciones ejecutadas en dos blockchains se completan o cancelan simultáneamente.

Sus desventajas son:

  • Se requiere una herramienta de ajuste de precios para permitir que ambas partes negocien el número de tokens que se intercambiarán.
  • El tiempo de confirmación está limitado por el tiempo que la transaccion tome para completarse, que es mucho más lento que un exchange centralizado.

Actualmente, una de las aplicaciones principales de los intercambios de inter-cadena atómicas es realizar conversiones entre las criptomonedas en billeteras de varias blockchains. La tecnología HTLC (Hash Time Locked Contract) en la que se basan los intercambios de inter-cadena atómicas se utiliza en muchos entornos de producción, como lightning network [2], debido a su seguridad robusta.

La característica de no tener una dependencia y atomicidad de terceros es consistente con los principios básicos de Bitcoin, por lo que el mercado favorece el futuro de los intercambios de inter-cadena atómicas. Muchas de las criptomonedas principales han realizado un intercambio atómico de inter-cadena y han publicado sus códigos. A medida que las tecnologías y los mercados de criptomoneda maduren, los intercambios de cadenas cruzadas atómicas tendrán más escenarios de aplicación. Por ejemplo, los intercambios entre cadenas de una gran cantidad de criptomonedas se pueden completar en blockchain utilizando esta tecnología, sin la necesidad de intercambios centralizados que cobrarán tarifas muy altas.

Trabajo relacionado

Debido a los diferentes scripts de pago utilizados por diferentes blockchains, existen diferentes implementaciones de intercambio de inter-cadena. Una implementación basada en el script de pago de bitcoin [3] permite el intercambio entre criptomonedas de tipo Bitcoin como BTC, BCH y LTC. También hay una implementación basada en Solidity [4], que realiza el intercambio entre las criptomonedas tipo Ethereum y las fichas ERC20. El proyecto swap.online [5] realiza intercambios entre criptomonedas de tipo Bitcoin, tipo Ethereum y EOS, e hizo un producto para que los usuarios ejecuten intercambios [6]. También hay un producto de cartera [7] que implementa el intercambio atómico de inter-cadena y la comparación de precios para varias criptomonedas, pero su código fuente no se puede encontrar en el Github.

Como Qtum admite tanto los scripts de pago de Bitcoin como Solidity, es posible desarrollar intercambios de inter-cadena atómicas de dos maneras. Pero como PoC, consideramos la forma más fácil de implementarlo, es decir, basado en el proyecto decred [3]. De esta manera, es fácil de realizar y se puede aplicar rápidamente al intercambio entre QTUM y BTC.

Sistema

El código fuente ha sido subido a Github [8]. La teoría y las operaciones se detallan a continuación.

Teoria

La teoría básica de HTLC se ha explicado en la publicación de Jimmy Song sobre Atomic Swaps [9]. Aquí pondremos énfasis en cómo se realiza mediante los scripts de pago de Bitcoin.

Por ejemplo, un titular de Qtum, Alice, realizará un intercambio atómico de inter-cadena con un titular de Bitcoin Bob. El proceso es el siguiente:

Alice inicia una transacción en Qtum que contiene un contrato de tiempo limitado y transfiere QTUM a Bob.

  • Bob audita la transacción.
  • Si se aprueba la transacción, Bob participa en una transacción similar en Bitcoin que paga BTC a Alice.
  • Alice audita la transacción.
  • Si la transacción es aprobada, Alice redime BTC de ella.
  • Bob extrae un secreto de la transacción de redención.
  • Bob redime QTUM de la transacción inicial.
  • Bob redime QTUM de la transacción inicial.
  • Si se alcanza el tiempo especificado en el lock de tiempo y Bob no ha redimido el token, Alice puede reembolsarlo.

La transacción descrita anteriormente se basa en los scripts de pago de Bitcoin. Hay dos tipos de scripts que construyen el proceso de validación de la transacción: un script de bloqueo y un script de desbloqueo. Un script de bloqueo es una condición de gasto colocada en una salida. Un script de desbloqueo es un script que “resuelve” o satisface las condiciones puestas en una salida por un script de bloqueo y permite que la salida se gaste. Los scripts de bloqueo y desbloqueo utilizados en un intercambio atómico de inter-cadena son los siguientes.

Cuando Alice inicia el intercambio, el script es:

OP_IF OP_SIZE secretSize OP_EQUALVERIFY OP_SHA256 secretHash OP_EQUALVERIFY OP_DUP OP_HASH160 pubkHash OP_ELSE locktime OP_CHECKLOCKTIMEVERIFY OP_DROP OP_DUP OP_HASH160 pubkHash OP_ENDIF OP_EQUALVERIFY OP_CHECKSIG

OP_IF es la rama que se ejecuta cuando Bob canjea el token, y OP_ELSE es la rama que se ejecuta cuando se alcanza el bloqueo de tiempo y el iniciador reembolsa el token.

Cuando Bob redime el token, la combinación de desbloqueo y bloqueo de scripts es:

sig pubkey secret OP_SIZE secretSize OP_EQUALVERIFY OP_SHA256 secretHash OP_EQUALVERIFY OP_DUP OP_HASH160 pubkHash OP_EQUALVERIFY OP_CHECKSIG

El proceso de validación es:

Si Bob no ha redimido el token después del tiempo en el bloqueo de tiempo, Alice puede reembolsarlo, y la combinación de scripts de desbloqueo y bloqueo es:

sig pubkey secret locktime OP_CHECKLOCKTIMEVERIFY OP_DROP OP_DUP OP_HASH160 pubkHash OP_EQUALVERIFY OP_CHECKSIG

El proceso de validación es:

Operacion

A continuación se muestra un intercambio atómico de inter-cadena entre Qtum y Bitcoin, en el cual 1.2345 QTUM mantenido por Alice se intercambia con 0.005678 BTC mantenido por Bob. Las transacciones finales son:

El proceso de operación es el siguiente:

  • Nodos de inicio
$ bitcoind -daemon -rpcuser=atomic -rpcpassword=atomic -deprecatedrpc=signrawtransaction -addresstype=legacy$ qtumd -daemon -rpcuser=atomic -rpcpassword=atomic
  • Alicia inicia
$ qtumatomicswap -rpcuser=atomic -rpcpass=atomic initiate QZaxv8Kfyj469aBMGHnXo9eadydk3CVPLm 1.2345Secret:      5999ed9033b9c10d18c3b8bf1b9f8a126ad5a7a77446521f97a9d523366bc558Secret hash: 594bcc33084211c6607a561dcd3bcfb1a39f049cb4fb760a0d981a6d4a106040Contract fee: 0.00114349 QTUM (0.00510487 qtum/kB)Refund fee:   0.00151614 QTUM (0.00521010 qtum/kB)Contract (MA6WNfmbWyzUAS78jbg4Avj4iomKBuYq6M):6382012088a820594bcc33084211c6607a561dcd3bcfb1a39f049cb4fb760a0d981a6d4a1060408876a9148e6839431a103352e20491de639eff514a659a4267042305325cb17576a914541fd33cc2409e9cc2a659eb005e7a00cfa1738b6888acContract transaction (ffd08f31ceff36c39fa142b0507b1c71839f4684cce42b2a74ec06917a71c4ae):020000000156c6222b3e502930542d29f02e56f6aedc0c1396c934b7fafb673e0cc029b991000000006b483045022100e5da4a9f78ed63cd5c2dfa67ba40710493214984318571427bd806fc6831c68002206e487f9d53d323c8cc72c10496feafa58be3b66242bdca1c3991cbafd252f8e3012103b4d6184f0c3a25ba4edaacf7b311a94869f87d8501d5d9ca2c9cbb0dc1c409ebfeffffff0290b25b070000000017a9141815a4111cbd02fa4d17755d2a5764e6b09b1a648759855116000000001976a914b65efa851b3dbfff005a7aa8d0620b133d87d27688ac00000000Refund transaction (beb0d86be8d102f5024538364328ead471da98b29a27a7a525502e45728bcdb7):0200000001aec4717a9106ec742a2be4cc84469f83711c7b50b042a19fc336ffce318fd0ff00000000ce47304402207b980278cf263e3d64d4fb3c4ae14d5cfebd34d8ce48ee208a5eff34da57c319022021023a2c3995003a38ca46ed397559aa1f8445124905f7e2986671eac9004c45012102b6a0684882463dcd9b812424a85f6b253b7d4a8b4b64485e7da8fb66eed2018f004c616382012088a820594bcc33084211c6607a561dcd3bcfb1a39f049cb4fb760a0d981a6d4a1060408876a9148e6839431a103352e20491de639eff514a659a4267042305325cb17576a914541fd33cc2409e9cc2a659eb005e7a00cfa1738b6888ac000000000152625907000000001976a914200adfb06b1016330fcc6bf45e18403b74788a6d88ac2305325cPublish contract transaction? [y/N] yPublished contract transaction (ffd08f31ceff36c39fa142b0507b1c71839f4684cce42b2a74ec06917a71c4ae)
  • Auditorias de bob
$ qtumatomicswap -rpcuser=atomic -rpcpass=atomic auditcontract 6382012088a820594bcc33084211c6607a561dcd3bcfb1a39f049cb4fb760a0d981a6d4a1060408876a9148e6839431a103352e20491de639eff514a659a4267042305325cb17576a914541fd33cc2409e9cc2a659eb005e7a00cfa1738b6888ac 020000000156c6222b3e502930542d29f02e56f6aedc0c1396c934b7fafb673e0cc029b991000000006b483045022100e5da4a9f78ed63cd5c2dfa67ba40710493214984318571427bd806fc6831c68002206e487f9d53d323c8cc72c10496feafa58be3b66242bdca1c3991cbafd252f8e3012103b4d6184f0c3a25ba4edaacf7b311a94869f87d8501d5d9ca2c9cbb0dc1c409ebfeffffff0290b25b070000000017a9141815a4111cbd02fa4d17755d2a5764e6b09b1a648759855116000000001976a914b65efa851b3dbfff005a7aa8d0620b133d87d27688ac00000000Contract address:        MA6WNfmbWyzUAS78jbg4Avj4iomKBuYq6MContract value:          1.2345 QTUMRecipient address:       QZaxv8Kfyj469aBMGHnXo9eadydk3CVPLmAuthor's refund address: QUGnzfP3f9VzbgzvjTQUrD77BqzRvBNgzoSecret hash: 594bcc33084211c6607a561dcd3bcfb1a39f049cb4fb760a0d981a6d4a106040Locktime: 2019-01-06 13:39:47 +0000 UTCLocktime reached in 47h45m56s
  • Bob participa
$ btcatomicswap -rpcuser=atomic -rpcpass=atomic participate 1MLrV4fegYEiZQHhVeAiY2bi7ptdUxXAkr 0.005678 594bcc33084211c6607a561dcd3bcfb1a39f049cb4fb760a0d981a6d4a106040Contract fee: 0.00000264 BTC (0.00001184 BTC/kB)Refund fee:   0.00000351 BTC (0.00001202 BTC/kB)Contract (3HZjVwSARiYGP6VrRF53yBwDLttXW4zpAN):6382012088a820594bcc33084211c6607a561dcd3bcfb1a39f049cb4fb760a0d981a6d4a1060408876a914df23b9da392add0d4d230e8c8ecea2a62d0797156704c5b7305cb17576a914cbc0e41865cd6c90c35df30629bc106de707ed6b6888acContract transaction (5984f23230715f7c20163356dce62a4afe0ee476b8567987432fa52758967f0f):0200000001575468b298b892115bc0cfbc22383a07b605ac6885f89d1c0c98fc22bcc93e4d130000006a47304402200836e0f0d050a6143197bf4cf2aa0d6b1d98603e301b763143e654338e6558f702207ad1ad41cb8e39de4047902c9952902c58111cf8adc135476f2bc1bd99e7f292012102cf81d5df7b8c17a7a624984fa7c97cc16849d1ca4122a4894c2a126d4e54d429feffffff0236181500000000001976a9144691ce0beb3a36ee67630c58a097a22e93406f2088acf8a908000000000017a914ae2163fc069b8616afcf7f6b70bee7657d35490d8700000000Refund transaction (2a30182d1b08c5d4f7931266e169a75b7cb631bbc43c32f681145df7a8829717):02000000010f7f965827a52f43877956b876e40efe4a2ae6dc563316207c5f713032f2845901000000cf483045022100cc53e08b3d238ca1ce21a8c4041966cd13710d6c9ed56199354d0f46bfeddfb402204c511d7b86be31c0dabb52fe5c2582871c8b4c3683ea46de018037dbee253f8e012102229b695d92beb1312b0c316e1f0c841c90deccc510994ff14bcea3dfe0873255004c616382012088a820594bcc33084211c6607a561dcd3bcfb1a39f049cb4fb760a0d981a6d4a1060408876a914df23b9da392add0d4d230e8c8ecea2a62d0797156704c5b7305cb17576a914cbc0e41865cd6c90c35df30629bc106de707ed6b6888ac000000000199a80800000000001976a914534c747a0ab001b92a0fa57cdd32459b14ed096b88acc5b7305cPublish contract transaction? [y/N] yPublished contract transaction (5984f23230715f7c20163356dce62a4afe0ee476b8567987432fa52758967f0f)
  • Auditorias de alicia
$ btcatomicswap -rpcuser=atomic -rpcpass=atomic auditcontract 6382012088a820594bcc33084211c6607a561dcd3bcfb1a39f049cb4fb760a0d981a6d4a1060408876a914df23b9da392add0d4d230e8c8ecea2a62d0797156704c5b7305cb17576a914cbc0e41865cd6c90c35df30629bc106de707ed6b6888ac 0200000001575468b298b892115bc0cfbc22383a07b605ac6885f89d1c0c98fc22bcc93e4d130000006a47304402200836e0f0d050a6143197bf4cf2aa0d6b1d98603e301b763143e654338e6558f702207ad1ad41cb8e39de4047902c9952902c58111cf8adc135476f2bc1bd99e7f292012102cf81d5df7b8c17a7a624984fa7c97cc16849d1ca4122a4894c2a126d4e54d429feffffff0236181500000000001976a9144691ce0beb3a36ee67630c58a097a22e93406f2088acf8a908000000000017a914ae2163fc069b8616afcf7f6b70bee7657d35490d8700000000Contract address:        3HZjVwSARiYGP6VrRF53yBwDLttXW4zpANContract value:          0.005678 BTCRecipient address:       1MLrV4fegYEiZQHhVeAiY2bi7ptdUxXAkrAuthor's refund address: 1KaMFF6XwvJahrohzzDmHzFgMxNuHSBegeSecret hash: 594bcc33084211c6607a561dcd3bcfb1a39f049cb4fb760a0d981a6d4a106040Locktime: 2019-01-05 13:57:25 +0000 UTCLocktime reached in 23h55m47s
  • Alice redime
$ btcatomicswap -rpcuser=atomic -rpcpass=atomic redeem 6382012088a820594bcc33084211c6607a561dcd3bcfb1a39f049cb4fb760a0d981a6d4a1060408876a914df23b9da392add0d4d230e8c8ecea2a62d0797156704c5b7305cb17576a914cbc0e41865cd6c90c35df30629bc106de707ed6b6888ac 0200000001575468b298b892115bc0cfbc22383a07b605ac6885f89d1c0c98fc22bcc93e4d130000006a47304402200836e0f0d050a6143197bf4cf2aa0d6b1d98603e301b763143e654338e6558f702207ad1ad41cb8e39de4047902c9952902c58111cf8adc135476f2bc1bd99e7f292012102cf81d5df7b8c17a7a624984fa7c97cc16849d1ca4122a4894c2a126d4e54d429feffffff0236181500000000001976a9144691ce0beb3a36ee67630c58a097a22e93406f2088acf8a908000000000017a914ae2163fc069b8616afcf7f6b70bee7657d35490d8700000000 5999ed9033b9c10d18c3b8bf1b9f8a126ad5a7a77446521f97a9d523366bc558Redeem fee: 0.0000039 BTC (0.00001200 BTC/kB)Redeem transaction (1dfc072337d079847fb634ebf7d4a5d51874142dd3bbb958c3556afa1b2fc29c):02000000010f7f965827a52f43877956b876e40efe4a2ae6dc563316207c5f713032f2845901000000f0483045022100a15b3165defce6994ebdddd2dc83c67032aa40f1095218ed474895135426ea6a02201e0dd886c7d5007b17436261c1e82f881874d2a8c9b1dae0f8b7a851c3eeebd201210274e7945427e4c669c7e8c9440fb694bcce47dccc1af17b997cea0a055040b400205999ed9033b9c10d18c3b8bf1b9f8a126ad5a7a77446521f97a9d523366bc558514c616382012088a820594bcc33084211c6607a561dcd3bcfb1a39f049cb4fb760a0d981a6d4a1060408876a914df23b9da392add0d4d230e8c8ecea2a62d0797156704c5b7305cb17576a914cbc0e41865cd6c90c35df30629bc106de707ed6b6888acffffffff0172a80800000000001976a914008d0a620a3cebd41927eaaebb67e541878c4b2a88acc5b7305cPublish redeem transaction? [y/N] yPublished redeem transaction (1dfc072337d079847fb634ebf7d4a5d51874142dd3bbb958c3556afa1b2fc29c)
  • Bob extrae el secreto
$ btcatomicswap -rpcuser=atomic -rpcpass=atomic extractsecret 02000000010f7f965827a52f43877956b876e40efe4a2ae6dc563316207c5f713032f2845901000000f0483045022100a15b3165defce6994ebdddd2dc83c67032aa40f1095218ed474895135426ea6a02201e0dd886c7d5007b17436261c1e82f881874d2a8c9b1dae0f8b7a851c3eeebd201210274e7945427e4c669c7e8c9440fb694bcce47dccc1af17b997cea0a055040b400205999ed9033b9c10d18c3b8bf1b9f8a126ad5a7a77446521f97a9d523366bc558514c616382012088a820594bcc33084211c6607a561dcd3bcfb1a39f049cb4fb760a0d981a6d4a1060408876a914df23b9da392add0d4d230e8c8ecea2a62d0797156704c5b7305cb17576a914cbc0e41865cd6c90c35df30629bc106de707ed6b6888acffffffff0172a80800000000001976a914008d0a620a3cebd41927eaaebb67e541878c4b2a88acc5b7305c 594bcc33084211c6607a561dcd3bcfb1a39f049cb4fb760a0d981a6d4a106040Secret: 5999ed9033b9c10d18c3b8bf1b9f8a126ad5a7a77446521f97a9d523366bc558
  • Bob redime
$ qtumatomicswap -rpcuser=atomic -rpcpass=atomic redeem 6382012088a820594bcc33084211c6607a561dcd3bcfb1a39f049cb4fb760a0d981a6d4a1060408876a9148e6839431a103352e20491de639eff514a659a4267042305325cb17576a914541fd33cc2409e9cc2a659eb005e7a00cfa1738b6888ac 020000000156c6222b3e502930542d29f02e56f6aedc0c1396c934b7fafb673e0cc029b991000000006b483045022100e5da4a9f78ed63cd5c2dfa67ba40710493214984318571427bd806fc6831c68002206e487f9d53d323c8cc72c10496feafa58be3b66242bdca1c3991cbafd252f8e3012103b4d6184f0c3a25ba4edaacf7b311a94869f87d8501d5d9ca2c9cbb0dc1c409ebfeffffff0290b25b070000000017a9141815a4111cbd02fa4d17755d2a5764e6b09b1a648759855116000000001976a914b65efa851b3dbfff005a7aa8d0620b133d87d27688ac00000000 5999ed9033b9c10d18c3b8bf1b9f8a126ad5a7a77446521f97a9d523366bc558Redeem fee: 0.00168464 QTUM (0.00519951 qtum/kB)Redeem transaction (10008e0a43a56b19266bcc087785789eb4af75c34f3501fb1caed05b63b11a61):0200000001aec4717a9106ec742a2be4cc84469f83711c7b50b042a19fc336ffce318fd0ff00000000ef47304402203ac06fb2ca8c5a3ffe89c424df7aa43b4fca57001815f7a48fd93d3c2bc4b58f02205fdc2179cb2db53552e3ada562f89097f9901b18dfb05c581e30cf54e88048fe012103f25b08492e78e32bb637eea3702e7587e7028b5256485b689b8310dac601f47a205999ed9033b9c10d18c3b8bf1b9f8a126ad5a7a77446521f97a9d523366bc558514c616382012088a820594bcc33084211c6607a561dcd3bcfb1a39f049cb4fb760a0d981a6d4a1060408876a9148e6839431a103352e20491de639eff514a659a4267042305325cb17576a914541fd33cc2409e9cc2a659eb005e7a00cfa1738b6888acffffffff0180205907000000001976a914631d44dd763ea361ffb68765f6c6d0aa4dc21a0e88ac2305325cPublish redeem transaction? [y/N] yPublished redeem transaction (10008e0a43a56b19266bcc087785789eb4af75c34f3501fb1caed05b63b11a61)

Referencia

[1] Intercambios de inter-cadena atómicas. https://arxiv.org/pdf/1801.09515.pdf.

[2] La red lightning de bitcoin: pagos instantáneos escalables fuera de la cadena. https://lightning.network/lightning-network-paper.pdf.

[3] Disminución de la implementación del intercambio atómico. https://github.com/decred/atomicswap.

[4] Implementación del intercambio atómico de Secto-io. https://github.com/secto-io/atomic-swap.

[5] Swap.online implementación de intercambio atómico. https://github.com/swaponline/swap.core.

[6] Swap.online. https://swap.online/.

[7] Billetera atómica. https://atomicwallet.io/.

[8] Qtum implementación de intercambio atómico. https://github.com/qtumatomicswap/atomicswap.

[9] Swaps atómicos. https://bitcointechtalk.com/atomic-swaps-d6ca26b680fe.

Contacto:

Huo Dong (huodong@pku.edu.cn), Zheng Yi (zhengyi@qtum.org)

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

No responses yet

Write a response