Канал микроплатеж позволяет настроить канал, по которому вы можете отправить небольшие платежи на вторую сторону, не подвергая все эти платежи на blockchain. Простейший вариант идеи использует первоначальную сделку депозит на 2-оф-2 multisig адрес, и nLockTime создать возврат этого депозита, который может быть потрачен только в будущем. Тогда вы можете напрямую отправить сделки получатель платежа с ранее nLockTime и что возврат вы немного меньше. Только получатель платежа может добавить свою собственную подпись последней сделки и претензии на общую сумму вы послали их.
Одна проблема здесь состоит в том, что сделка Изменчивость может позволить получатель платежа изменить транзакцию депозита таким образом, что сделка возврат недействителен, что означает, что вы должны доверять приемник на этапе установки. CHECKLOCKTIMEVERIFY (перечисленный в BIP 65) будет решить эту проблему, добавив проверку Locktime к самому Bitcoin Script, что позволяет сделать транзакцию депозита в адрес P2SH, который по своей сути позволяет вам подписывать свои собственные сделки возврата в каком-то момент в будущем, в дополнении к multisig замок 2-из-2, которая требует вас и приемник оплаты, чтобы добавить одну подпись.
Ограничение такого рода канал является то, что поток платежей только в одном направлении. Это происходит потому, что получатель платежа может подписать Любые сделка вы посылаете их, а не только самая последняя, и поэтому можно просто подписать сделку перенося самую большую сумму в их контролем. Это легко исправить путем открытия второго платежа канала в противоположном направлении, но теперь обе стороны должны внести деньги в течение срока службы двух каналов. Если одна из сторон не знает заранее, будет ли другая сторона идти в кредит, имея только один канал может сохранить использование депозита.
Я предлагаю способ использования CHECKLOCKTIMEVERIFY, чтобы реверсивный канал оплаты, введение более одной дополнительной операции вещания, с периодом ожидания до того, как получатель платежа может получить доступ депонированных средств. Дополнительные сделки и период ожидания применяются только тогда, когда вкладчик не сотрудничает с приемником.
В этом протоколе, установка идентична с депозитом на адрес P2SH сопоставления сценария, позволяющий либо однопартийный + CHECKLOCKTIME или 2-из-2. В этом случае, однако, все платежи вкладчик происходят в форме unbroadcast сделок в специальный проведение адреса.
Эти холдинг адрес сам по себе является P2SH адреса, с помощью сценариев, известных обоего сторон. Каждый сценарий может быть погашен в одном из двух способов:
- приемником оплаты, используя ограничение CHECKLOCKTIME, который истекает некоторый период времени после того, как ограничение на возврат сделки вкладчика, или
- вкладчиком, используя свою собственную подпись, вместе с hashlock.
Во втором случае, мы на самом деле использовать двойной hashlock, то есть вкладчик должен обеспечить значение, когда SHA256-хэш дважды производит значение в скрипте.
Приемник генерирует эти значения в соответствии со следующим алгоритмом: Начиная с секретом S0, они удваивают хэш-S0 чтобы значение hashlock для первого взноса, D0 = Н (Н (S0)). Затем, чтобы сделать Sя + 1 учитывая Sя, они создают общественное временное значение, Nя, и пусть Sя + 1 = Н (Ня | H (Sя)), Где а | Ь обозначает строку с последующей строкой б. Значения D hashlockя не являются секретными, и может быть раскрыта заранее или как часть процесса приема, связанного платежа.
Когда получатель хочет вернуть некоторую сумму вкладчика, приемник находит последний платеж, который оставил вкладчик с балансом большая чем желаемый баланс и согласовывает перемотку последовательности платежа до этого момента, с дополнительной оплатой оставшегося вкладчиком. Предположим, что последний платеж, который будет оставаться в силе был я-й платеж, считая от нуля. Приемник создает новый одноразовый номер, N»я, создает связанное с ним новым секретным значением S»я + 1 на S»я + 1 = Н (N»я | H (Sя)), И посылает D»я + 1 вкладчик с просьбой о выплате нужного количества. Эта сумма будет больше, чем связанные с Dя, но меньше, чем связанные с Dя + 1, так что вкладчик не нужно доверять приемник для того, чтобы удовлетворить запрос. Платежная цепь теперь раздвоенный на Dя, с ответвлением Dя + 1, Dя + 2... и ветвь, которая только имеет D»я + 1. Приемник в настоящее время раскручивается старая ветка обратно в Dя, путем выявления Sя + 1 вкладчику. Теперь вкладчик может генерировать - и проверить - секреты Sя + 1, Sя + 2..., и так знает, что если приемник пытается подписать и транслировать сделку по адресу, используя один из этих секретов, вкладчик может забрать все свои средства до приемника может поставить свои собственные (CHECKLOCKTIME ограниченно) сделки с этого адреса на blockchain. Теперь лучший использовать платеж приемник является один связан с D»я +».
Когда обе стороны хотят закрыть канал оплаты, одна сторона подписывает сделку с адреса депозита на любые адреса желательны, и посылает транзакцию с другой стороны, чтобы добавить свою собственную подпись и опубликовать. Это позволяет избежать ни одной из сторон, имеющих ждать ограничение CHECKLOCKTIME истекает. Если одна из сторон отказывается от протокола в этой точке, другой может использовать ограничения CHECKLOCKTIME, чтобы гарантировать, что они получают по крайней мере столько же, как если бы и сотрудничали. Обратите внимание, что удерживающие адреса используются только на blockchain, когда протокол отказались.
Этот протокол не имеет дело со случаем вредоносных атак на сеть связи одной из сторон, которые могли бы держать их в автономном режиме до тех пор, CHECKLOCKTIME не истек. Это то, что каждая сторона должна учитывать при выборе времени ограничения должны быть на месте для. Протокол улучшает Использование blueadept в новой nLockTime для каждого обратного платежа, сохраняя время ожидания зависит от количества платежей, и не требуют ни одной из сторон, чтобы предсказать заранее, как будут происходить много платежей.