中位时间过去(Median-Time-Past, MPT)

在比特币中,墙上时间和共识时间之间存在微妙但非常重要的区别。比特币是一个去中心化的网络,这意味着每个参与者都有自己的时间观念。网络上的事件不会在所有地方即时发生。必须考虑网络延迟,以适应每个节点的时间观点。最终,一切都会同步,形成一个共同的区块链。 比特币大约每10分钟就会就过去的区块链状态达成共识。

区块头中设置的时间戳由矿工设置。共识规则允许一定程度的灵活性,以解决去中心化节点之间的时钟精度差异。然而,这给矿工造成了一个不利的激励,即在区块中虚报时间。例如,如果矿工将时间设定在未来,他们可以降低难度,从而可以挖掘更多区块并声称一部分留给未来矿工的区块补贴。如果他们可以将某些区块的时间设定在过去,那么他们可以将当前时间用于其他区块,从而再次使区块之间的时间看起来很长,以操纵难度。

为了防止操纵,比特币有两个共识规则。第一个是,没有节点将接受任何时间超过两小时的区块。第二个是,没有节点将接受一个时间小于或等于最近的11个区块的中位数时间的区块,称为过去中位数时间(MTP)。

作为BIP68相对时间锁定激活的一部分,对交易中的时间(绝对和相对)计算方式也进行了更改。以前,矿工可以在区块中包含任何具有与该区块相等或更早的时间锁定的交易。这促使矿工使用他们认为可能的最新时间(接近两小时的未来)以便更多的交易符合他们的区块。

为了消除虚报的激励并加强时间锁的安全性,BIP113被提出,并在相对时间锁的BIP同时激活。MTP成为所有时间锁计算中使用的共识时间。通过从大约过去两小时开始计算中点,减少了任何一个区块时间戳的影响。通过整合11个区块,没有单个矿工可以影响时间戳,以获得尚未成熟的具有时间锁的交易的费用。

MTP改变了锁定时间、CLTV、序列和CSV的时间计算实现。由MTP计算的共识时间通常比墙上时钟时间晚约一小时。如果您创建时间锁定交易,请在估算要编码的锁定时间、序列、CLTV和CSV的期望值时予以考虑。

Last updated