Перейти к содержимому
buybitcoinsmart

Глоссарий / Справочник разработчика

PP expires

Что такое PP expires?
PP expires представлял собой необязательную временную метку Unix в сообщении PaymentDetails протокола BIP70, которая указывала кошельку прекратить исполнение запроса после наступления этого момента.

Определено в BIP-70.

Каждому счету на биткоин с фиксированной ценой нужен срок, потому что цена меняется, пока клиент принимает решение. BIP70 дал продавцам для этого одно поле, временную метку Unix длиной 64 бита, и оставил его необязательным. Эта практика пережила протокол: обратный отсчет на экране мгновенной покупки или в биткоин-банкомате выполняет ровно ту же задачу.

Как это работает

Статус: исторический. expires было полем 4 сообщения PaymentDetails, а Bitcoin Core объявил BIP70 устаревшим в версии 0.19, прежде чем удалить его в 0.20.0 3 июня 2020 года. Сегодня это поле никто не реализует.

В сообщении рядом друг с другом стояли два счетчика времени. time было обязательным и фиксировало момент, когда продавец составил запрос; expires было необязательным и фиксировало момент, когда запрос должен перестать быть действительным. Оба считали секунды с 1 января 1970 года, и оба были беззнаковыми 64-битными целыми, что незаметно позволяло избежать ограничения 19 января 2038 года, в которое упирается знаковый 32-битный счетчик.

Соблюдение срока целиком зависело от программного обеспечения плательщика. Кошелек сравнивал временную метку со своими системными часами и отказывался строить транзакцию, как только срок истекал, а значит, устройство с неверными часами либо оплачивало уже недействительный счет, либо отклоняло действительный. Само поле никак не касалось блокчейна. Транзакция, оплачивающая просроченный запрос, так же действительна, как любая другая, и то, зачтет ли продавец платеж, вернет деньги или молча оставит их себе, никогда не было вопросом протокола.

Короткие сроки несли в себе особую ловушку. Биткоин нацелен в среднем на один блок каждые десять минут, поэтому пятиминутный срок мог истечь еще до появления первого подтверждения, оставляя клиента, который действительно заплатил, и счет, который программное обеспечение продавца уже списало.

Где это встречается

Котировки с фиксированной ценой повсюду в покупке биткоина, и за каждой из них стоит срок действия.

Экран мгновенной покупки на бирже показывает курс рядом с обратным отсчетом, обычно где-то от нескольких секунд до пары минут. Если дать ему истечь, котировка пересчитывается по текущей цене. Биткоин-банкомат делает то же самое на более длинном отрезке времени, и отчасти поэтому его спред шире: оператор берет на себя ценовой риск за все время, которое вы проводите у автомата.

Lightning сделала срок обязательным, а не необязательным. Счет BOLT11 несет поле x для срока действия, а при его отсутствии по умолчанию используется 3600 секунд, то есть один час. Если заплатить позже, добросовестно работающий узел отклонит платеж, а не оставит его в подвешенном состоянии.

Практический совет плательщику незамысловат: когда указан срок, не экономьте на комиссии. Занижение комиссии ради нескольких сотен сатоши является самым частым способом пропустить срок, и транзакция, которая подтверждается с опозданием, как раз и превращается в обращение в поддержку вместо заказа.

PP expires vs locktime

Срок действия был просьбой продавца, которую программное обеспечение кошелька решало соблюдать; locktime является правилом, которое исполняет каждый узел сети. К тому же они действуют в противоположных направлениях и с разной силой. expires отмечало момент, после которого платеж уже не следует делать, и ни один майнер его никогда не проверял. Locktime, записанный в самой транзакции, называет высоту блока или время, до наступления которых транзакция вообще не может быть включена в блок. Первое закрывает окно; второе открывает его.

Не путать с

Часто задаваемые вопросы

Что происходило, если оплатить запрос на платеж в биткоине после истечения его срока?

Транзакция оставалась действительной, потому что срок действия никогда не был правилом сети. Только программное обеспечение продавца решало, что делать дальше, а на практике это означало зачесть платеж по новому курсу или вернуть деньги за вычетом комиссии.

Почему котировка на бирже истекает через несколько секунд?

Потому что продавец гарантирует вам цену, которую обязан соблюдать. Обратный отсчет ограничивает, насколько рынок может сдвинуться, пока вы принимаете решение, а если дать ему истечь, котировка просто пересчитывается по текущей цене, а не отменяет ваш ордер.

Читайте далее

Связанные термины

Еще в разделе «Справочник разработчика»

Читать эту страницу на английском