Digamos que Alice quiere enviar a Bob 1 BTC y, a cambio, Bob le enviará a Alice 1 ETH.
La dirección de Bitcoin de Alice es BTC_A y la dirección de Ethereum de Alice es ETH_A. Asimismo, Bob posee las direcciones BTC_B y ETH_B.
BTC_B es una dirección "nueva", sin ningún tipo de historial de transacciones.
Alice crea una sola transacción para ETH_A que contiene un poco más de la cantidad que enviará a Bob y la transmite. El hash de transacción de esto se llamará tx1.
Bob espera a que se confirme esa transacción y luego crea un contrato inteligente con los siguientes parámetros (inmutables):
inputaddr, establecido en BTC_A
inputtx, establecido en tx1_txhash desde arriba
dirección de salida, establecido en BTC_B
minfee, establecida en una tarifa/byte de Bitcoin "razonable", según las condiciones actuales de la red
tiempo de espera, establecido en la cantidad de segundos después de los cuales se confirmará una transacción con minfee en la cadena de bloques BTC, además de un margen significativo para la seguridad
val se establece en una cantidad que representa 1 BTC, o la cantidad que Alice le envíe a Bob
Bob también deposita 1 ETH en el contrato inteligente y no puede retirarlo
Alice envía una transacción, tx2, a la cadena de bloques de Bitcoin con las siguientes propiedades:
También envía toda esta transacción al contrato inteligente, que verifica estas cuatro propiedades. Si se cumplen todos, anote el tiempo como txtime.
Bob monitoreará continuamente la cadena de bloques de Bitcoin, y si Alice intenta duplicar la transacción de entrada, enviará la transacción de doble gasto al contrato inteligente. El contrato inteligente verificará que esta transacción sea legítima y, si no es idéntica a la primera transacción que Alice envió anteriormente, reembolsará el ETH a ETH_B.
Bob también podrá retirar el ETH bloqueado si Alice no envía la transacción de BTC al contrato en un período de tiempo razonable.
Si ha pasado el tiempo de espera desde txtime y Bob no ha presentado prueba de un gasto doble, Alice puede retirar el ETH bloqueado a ETH_A cuando lo desee.
Esto parece el tipo de cosa que alguien ya habría ideado, pero no pude encontrar ningún otro ejemplo confiable de un intercambio BTC-ETH. ¿Hay un defecto fundamental en este sistema?
ismael
daniel m
ismael
daniel m