Как вы знаете, Satoshi представил решение предложить некоторую защиту от морального риска в сделках. Она в основном состоит в специальных операциях, выводы которых reedemable не с одним закрытым ключом, а с двумя. Таким образом, можно Алиса отправить несколько биткойнов Бобу так, что Алиса никогда не сможет заставить ее Bitcoins назад, но Боб не сможет получить их либо, если Алиса, наконец соглашается.
Я считаю, что это лучшее, что мы можем сделать против этих видов рисков, без использования третьей стороной.
Тем не менее, это своего рода низкого уровня, поскольку она опирается на конкретную особенность протокола Bitcoin. Я не имею ни малейшего представления о том, как на самом деле сделать это, например.
Я думаю, что это можно сделать именно это с более высоким уровнем методом.
Итак, давайте предположим, что Алиса хочет продать Бобу 10 BTC против 30 долларов с помощью банковского перевода. Алиса и Боб не доверяют друг другу, так что никто из них не готов заплатить первый.
Вот идея.
Алиса и Боб генерируют новый адрес случайных Bitcoin на своем компьютере. Эти ключи являются в основном секретные exponants в secp256k1 эллиптической кривой. Они также вычислить соответствующие общественные точки, которые два 256 битого число.
Алиса:
Код:
мой $ ключ = новый лейбл Bitcoin :: PrivateKey => "10BTC для Боба";
мой $ точка = $ кнопочная>public_point;
Боб:мой $ точка = $ кнопочная>public_point;
Код:
мой $ ключ = новый лейбл Bitcoin :: PrivateKey => "10BTC ожидать от Алисы";
мой $ точка = $ кнопочная>public_point;
мой $ точка = $ кнопочная>public_point;
Они оба обмена их общественные пункты, на IRC, например:
Алиса> Хорошо Боб, вот мой общедоступный пункт: 435ab6e5 ...... 5f54, b87f566 ...... 90cd
боб> Хорошо, вот мое: 123fe ..... 32а, 32aa54 .... cc54
Теперь они вычислить сумму этих точек, и получить соответствующий адрес Bitcoin
Алиса:
Код:
мой $ pointsum = EC :: добавить $ точку, $ bobpoint;
печатать новый Bitcoin :: Адрес $ pointsum;
печатать новый Bitcoin :: Адрес $ pointsum;
Боб:
Код:
мой $ pointsum = EC :: добавить $ точку, $ alicepoint;
печатать новый Bitcoin :: Адрес $ pointsum;
печатать новый Bitcoin :: Адрес $ pointsum;
Они проверяют, они получают тот же адрес Bitcoin, а затем Алиса посылает 10 BTC на этот адрес.
На данный момент, ни один из них не способно reedeming этих 10B, но, очевидно, они могут проверить, что они находятся в blockchain с bitcoinexplorer или что-то.
После того, как Боб aknowledges, что Bitcoins захоронены достаточно в blockchain, он может инициировать 30USD банковским переводом.
Два или три дня спустя, Алиса aknowledges, что она получила 30USD. Теперь она общается секрет exponant она генерируется.
Боб теперь знает, как тайный экспонент. Таким образом, он может вычислить секретный exponant ключа обмена:
Код:
мой $ exchange_key = новый Bitcoin :: PrivateKey + ($ ключ + $ alice_key)% secp256k1->{Генератора} {порядок};
С помощью этого ключа, Боб может выкупить 10BTC.
Если бы Алиса отказалась раскрыть секретный ключ, Боб был бы ввинчивается, но Алиса не получит никакой реальной пользы для этого, как 10BTC будет потеряно в blockchain навсегда.
Я ошибаюсь где-нибудь?