¿Sería posible hacer intercambios atómicos con Monero y Bitcoin?

Litecoin y Vertcoin actualmente están probando intercambios atómicos con Bitcoin a partir de 2017-08. ¿Sería posible realizar intercambios atómicos con Monero?

Respuestas (2)

Para hacer un intercambio atómico, esencialmente necesita dos cosas:

  1. La capacidad de hacer 2 de 2 firmas múltiples. Básicamente, todas las criptomonedas admiten esto, incluidos Bitcoin y Monero, aunque con diversos grados de facilidad de uso. En Bitcoin puedes usar el código de operación CHECKMULTISIG; en Monero (y eventualmente Bitcoin, espero) puede hacer firmas Schnorr de 2 partes que son más privadas y compactas pero requieren interacción. En Ethereum, puede hacer firmas ECDSA de 2 partes que son complejas y molestas pero perfectamente factibles (o tal vez puede usar un contrato multisig, pero estos no son atómicos y tienen una semántica súper extraña, así que tenga cuidado).
  2. La capacidad de tener transacciones de reembolso de tiempo de espera, de modo que si una de las partes desaparece a la mitad del protocolo, la otra parte recuperará sus fondos. Esto se hace usando transacciones bloqueadas de Bitcoin u OP_CSV.

Desafortunadamente, Monero actualmente no tiene una forma de hacer reembolsos. Creo que tiene transacciones bloqueadas, pero no se pueden usar ya que Monero no le permite gastar monedas no confirmadas, lo que significa que tendría que poner sus monedas antes de realizar una transacción de reembolso, dejando una ventana para que sus monedas se atasquen. Desafortunadamente, no espero que Monero admita el gasto de transacciones no confirmadas, porque estas interactúan mal con sus firmas de anillo.

Por otro lado, algo como OP_CSV, donde las condiciones de gasto de las monedas cambian después de un tiempo de espera sin la necesidad de transacciones explícitas de tiempo de bloqueo, parece ingenuamente imposible en Monero ya que sus firmas de anillo requieren que las salidas se etiqueten con claves públicas en lugar de scripts. Además, cada salida puede tener como máximo una clave pública, ya que debe tener como máximo una imagen de clave para evitar el doble gasto.

Afortunadamente , hay una tercera solución, propuesta por Pedro Moreno-Sánchez, y AFAIK, que no está escrita en ninguna parte. (Agradecería los comentarios que me vinculen a un artículo, me enteré de esto a través de la vid, así que tal vez estoy fuera del circuito). La forma en que esto funciona es que las salidas pueden etiquetarse con dos claves públicas, cada una con el mismo imagen clave. ¿Cómo pueden dos llaves tener la misma imagen? Esencialmente, las imágenes clave se calculan mediante la conversión de claves públicas en otras claves públicas y luego multiplicando el resultado por la clave secreta original. Si el "hash" de cada clave se define como la otra clave, el resultado de este proceso será el mismo sin importar qué clave se use(específicamente, el secreto Diffie-Hellman asociado con las dos claves). Esto significa que una clave puede pertenecer a la parte original y tener un tiempo de bloqueo, mientras que la otra clave es una clave multisig 2 de 2 utilizada para el intercambio en el caso cooperativo. Al gastar, es imposible saber qué tecla se está utilizando realmente.

(Está bien, si el tiempo de bloqueo ha expirado, es casi seguro que se esté utilizando la clave de tiempo de bloqueo y, de lo contrario, debe ser la clave que no es de tiempo de bloqueo. Pedro tuvo una solución para eso usando pruebas de rango en los tiempos de bloqueo, pero creo que la complejidad de la privacidad proporción es demasiado alta, y en cualquier caso distrae del punto esencial.)

Esto no es compatible con Monero en la actualidad, pero espere verlo en una bifurcación en el futuro, porque la capacidad de realizar intercambios atómicos y, eventualmente, los canales de pago, es algo en lo que sus desarrolladores y la comunidad están muy interesados.

El documento DLSAG salió el 29 de mayo de 2019: eprint.iacr.org/2019/595 . También hay un video de MoneroKon 2019 que lo explica: youtube.com/watch?v=x4q38ndnQnw

Un poco tarde, pero tal vez alguien quiera saber de todos modos.

Para que se lleve a cabo un intercambio atómico, ambas (o todas) las partes deben poder ver la cadena de bloques y todas las transacciones que ocurren allí. Esto se debe a que cuando la primera parte reclama su parte de la transacción, la segunda debe poder obtener el secreto de la transacción de la primera parte.

Cuando ahora miras un explorador monero, no ves nada. Entonces, la segunda parte no puede obtener el secreto y, por lo tanto, no puede reclamar su parte del intercambio.

Es por eso que los intercambios atómicos (en su forma actual) no pueden realizarse en monero.