Допустим, Алиса хочет отправить Бобу 1 BTC, а взамен Боб отправит Алисе 1 ETH.
Биткойн-адрес Алисы — BTC_A, а адрес Алисы в Ethereum — ETH_A. Точно так же Бобу принадлежат адреса BTC_B и ETH_B.
BTC_B — это «свежий» адрес, без какой-либо истории транзакций.
Алиса создает одну транзакцию в ETH_A, содержащую немного больше суммы, которую она отправит Бобу, и транслирует ее. Хэш этой транзакции будет называться tx1.
Боб ждет подтверждения этой транзакции, а затем создает смарт-контракт со следующими (неизменяемыми) параметрами:
inputaddr, установите BTC_A
inputtx, установите tx1_txhash сверху
выходной адрес, установленный в BTC_B
minfee, установленная на «разумную» плату за биткойн/байт, в зависимости от текущих условий сети
время ожидания, устанавливаемое на количество секунд, по истечении которых транзакция с minfee будет подтверждена в блокчейне BTC, плюс значительный запас для безопасности
val устанавливается на сумму, представляющую 1 BTC, или сколько Алиса отправляет Бобу
Боб также вносит 1 ETH в смарт-контракт и не может его вывести.
Алиса отправляет транзакцию tx2 в блокчейн Биткойн со следующими свойствами:
Она также отправляет всю эту транзакцию в смарт-контракт, который проверяет эти четыре свойства. Если все они выполнены, отметьте время как txtime.
Боб будет постоянно следить за блокчейном Биткойн, и если Алиса попытается дважды потратить входную транзакцию, он отправит транзакцию двойного расходования в смарт-контракт. Смарт-контракт проверит, является ли эта транзакция законной, и, если она не идентична первой транзакции, отправленной Алисой ранее, вернет ETH обратно в ETH_B.
Боб также сможет вывести заблокированный ETH, если Алиса не отправит транзакцию BTC в контракт в течение разумного периода времени.
Если время ожидания истекло с момента txtime, а Боб не представил доказательства двойной траты, Алиса может вывести заблокированный ETH на ETH_A на досуге.
Это похоже на то, что кто-то уже придумал, но я не смог найти других ненадежных примеров обмена BTC-ETH. Есть ли принципиальный недостаток в этой системе?
Исмаэль
Дэниел М.
Исмаэль
Дэниел М.