мотивация:
Алиса хочет платить Бобу по некоторым взаимно согласованным условиям, и не хочет, чтобы Боб, чтобы иметь возможность впоследствии утверждать, что условия были разные.
Один из способов, что люди предложили выполнить это оплата за контракт:
Боб публикует общественную точку ЕС, для которого он знает секретный ключ.
Алиса вычисляет H (контракта) и добавляет это значение в общественной точки Боба, мы будем называть результат ключевой контракт.
Алиса посылает средства на 1 из 2 {Alice Публичных, контракт Key}.
Боб, зная, как его закрытый ключ и контракт может получить закрытый ключ и избавь компенсацию.
Если договор забывается (или Боб решает, что ему не нравится в последнюю минуту переговоров Алисы) Боб может не выкупить его и Алиса может получить денежные средства.
Если Боб не в состоянии сделать хорошей сделку, Алиса может показать людям контракт и каждый может видеть, что Боб согласился на это (в силе дорожа монеты).
Обратите контракт уменьшает важность аутентификации платежа, потому что мы знаем, что обязательно кто искупил монеты знал контракт.
Одна из проблем, с оплатой по-контракта является то, что третья сторона может потенциально заставить Алису или Боба выведать контракт. Ситуация для оплаты в договоре хуже, чем вы, если, вместо этого, Боб только что Алиса регулярно подписал счет-фактура, который указан адрес для Алисы платить, потому что если кто-то пытался принуждение, чтобы получить контракт Боб может подписать подложный договор и дать им, что вместо этого.
Это не может быть действительно большая проблема на практике, и она может быть решена с простым способом всегда разрушив контракты после того, как они будут выполнены ... но я подумал, что это стоит сделать к сведению, что это возможно, чтобы сохранить forgability в контекст оплаты сжиматься.
Оплатите на контракт с forgability:
Алиса и Боб согласны по контракту. Хэш сообщения в приведенном выше базовом протоколе платы к контракту заменяется хамелеон хэш (таких, как этот на основе гэп-DH, или действительно любой другой один этот протокол не нужен секретный сохранности имущества). Боб дополнительно посылает Алисе открытого ключ и случайное значение для хамелеона хэша и доходы протокола, как обычно.
Хамелеон хэш является хэш-функцией, которая принимает сообщение, а Публичные, и случайное значение. Функция разработана таким образом, что он работает в качестве сильной хэш-функции, но владелец соответствующего закрытого ключа может производить свободные столкновения. Например. он может легко найти Random2 для message2 таким образом, что СН (сообщение, случайный, Публичный) == СН (message2, Random2, Публичный).
Так что если кто-то пытается принудить стороны к передаче своего контракта Боб может произвести поддельный контракт, соответствующий платить по договору сделки, и это подлог неразличим.
Если Боб чита Алисы, Алиса все еще может опубликовать первоначальный договор и общественность может быть удовлетворена тем, что Боб ведет себя нестабильно. (Даже если Боб продолжает публиковать другие фальшивки, это не имеет значения, какой из них является оригинальным с целью показать, что поведение Боба ненадежна).
Это заставляет вас вернуться к той же безопасности против принуждения как знаковой-фактура, позволяя использовать оплату за контракт.
Если требуются сильнее безотказности два хамелеоны хэш могут быть используется- каскада на вершине каждого Другие- один шпонку Алисы и один шпонку Бобом, так что обе стороны должны сотрудничать, чтобы произвести поддельный контракт.