跳转到正文
buybitcoinsmart

术语表 /开发者参考

PP expires

PP expires 是什么?
PP expires 曾是 BIP70 PaymentDetails 消息中可选的 Unix 时间戳,用于告知钱包:该时刻一过,就不再处理这笔付款请求。

规定于 BIP-70。

每一张固定价格的比特币账单都需要一个截止时间,因为客户犹豫期间价格会变动。BIP70 为商家提供了一个字段来设置截止时间,即一个64位的 Unix 时间戳,并且将其设为可选。这一做法在协议淘汰后仍然延续:即时购买页面或比特币 ATM 上的倒计时,所起的作用与之完全相同。

运作方式

状态:已成历史。expires 是 PaymentDetails 消息的第4个字段,Bitcoin Core 在版本0.19中将 BIP70 标记为已弃用,随后于2020年6月3日在0.20.0中将其删除。如今没有任何软件实现该字段。

消息中并排有两个时钟。time 为必填项,记录商家生成请求的时间;expires 为可选项,记录请求应在何时失效。两者都以自1970年1月1日起的秒数计时,并且都是无符号的64位整数,因而悄然避开了有符号32位计数器会遇到的2038年1月19日这道关口。

执行完全取决于付款方的软件。钱包会把该时间戳与自身系统时钟比较,截止时间一过便拒绝构建交易,这意味着系统时钟有误的设备,要么会支付一张已失效的账单,要么会拒绝一张仍然有效的账单。该字段与区块链毫无关系。支付已过期请求的交易与其他交易一样有效,商家是入账、退款还是悄悄留下这笔款项,从来都不属于协议层面的问题。

有效期较短时有一个特别的陷阱。比特币平均每十分钟产生一个区块,因此五分钟的有效期可能在出现任何一次确认之前就已到期,导致客户确实已经付款,而商家的软件却已将这张账单作废。

在哪里会遇到它

在购买比特币时,固定价格的报价随处可见,每一个报价背后都有一个有效期。

交易所的即时购买页面会在汇率旁显示倒计时,通常为几秒至两三分钟不等。倒计时结束后,报价会按当前价格重新生成。比特币 ATM 的做法相同,只是时间窗口更长,这也是其价差更大的部分原因:您在机器前停留多久,运营方就要承担多久的价格风险。

闪电网络把截止时间从可选改为必填。BOLT11 账单带有一个 x 字段用于设置有效期,缺省时默认为3600秒,即一小时。超过这一时间再付款,规范运行的节点会拒绝该付款,而不会让它悬而未决。

对付款方的实用建议并不起眼:附有截止时间时,不要在手续费上省钱。为节省几百聪而少付手续费,是错过时间窗口最常见的原因,而延迟到账的交易恰恰会演变成客服工单,而不是一笔订单。

PP expires vs locktime

有效期是商家提出的请求,钱包软件可以选择遵守;locktime 则是网络上每个节点都会强制执行的规则。两者不仅约束力不同,方向也相反。expires 标明的是此后不应再付款的时刻,没有任何矿工检查过它。locktime 写在交易本身之中,指定一个区块高度或时间,在此之前该交易根本不能被打包进区块。一个是关闭窗口,另一个是开启窗口。

请勿混淆

常见问题

如果在比特币付款请求过期后才付款,会怎样?

这笔交易仍然有效,因为有效期从来不是网络规则。接下来如何处理,只取决于商家的软件,实际上就是按新汇率入账,或者扣除手续费后退款。

为什么交易所的报价几秒钟后就会失效?

因为卖方向您保证的是一个必须兑现的价格。倒计时限制了您做决定期间市场可能出现的波动,倒计时结束后只是按当前价格重新生成报价,而不是取消您的订单。

接着阅读

相关术语

开发者参考中的更多术语

阅读本页英文版