入金锚定与出金锚定时长
了解为什么将 BTC 存入 sBTC 所需的时间,与将 sBTC 提回 BTC 所需的时间不同。
为什么存款这么快而取款这么慢?
sBTC 允许用户通过使用一种名为 sBTC 的包装代币,在 Stacks L2 上使用他们的 BTC。将 sBTC 转入 Stacks L2 可能只需 1 个比特币区块的时间,但将 sBTC 从 Stacks L2 转出到原生比特币区块链则需要 6 个比特币区块。为什么会这样?
要理解为什么进入 Stacks 层可以如此之快,而离开却必须如此之慢,我们首先需要了解 Stacks 区块链的共识机制。
Stacks 区块链使用一种名为转移证明(Proof of Transfer,简称 PoX)的共识机制来铸造新区块。在每个比特币区块上,Stacks 区块链上的矿工会各自牺牲一定数量的比特币,竞标获得生成接下来几个 Stacks 区块的权利;他们会保留继续生成 Stacks 区块的权利,直到下一个比特币区块出现,而最新一轮竞标会选出新的 Stacks 矿工。
确定哪些 Stacks 区块应与哪些比特币区块绑定
签名者(Stacks 区块链中的验证者对应角色)会查看比特币区块,并根据当前拥有生成 Stacks 区块权利的矿工来批准新的 Stacks 区块;他们只会批准来自在他们共同认为“最佳”的分叉内、于最近一次比特币区块竞标中获胜的矿工的新区块。只有当签名者一致同意提出该区块的矿工是比特币区块链竞标的赢家时,Stacks 区块链才能添加新区块,而所有签名者都在对应该添加哪个区块进行投票,实际上是在共同决定哪个比特币分叉是最佳的。
这里有一个重要的部分:如果签名者认为出现了一个新的、更好的比特币分叉,并且它不同于前几个 Stacks 区块所挖掘所基于的分叉,那么他们就只会批准建立在那些与该新比特币分叉绑定的现有 Stacks 区块之上的新区块。换句话说,在另一个比特币分叉上的、并不属于这个新规范分叉的比特币区块上构建的每一个 Stacks 区块都会被视为无效;因此 Stacks 区块链也会分叉。
“Stacks 区块链会随着比特币区块链一起分叉。”
现在我们已经理解了这种分叉机制,让我们看看为什么离开 Stacks 层必须如此之慢。
为什么从 sBTC 转到 BTC 需要更多时间
sBTC 作为一个智能合约可以交互的代币存在于 Stacks 层。要将 sBTC 从 Stacks 层转到比特币层,sBTC 的所有者会调用一个智能合约来启动我们所说的“提现”流程。这会让“sBTC 签名者”(这与前面提到的签名者不同)知道,他们需要在比特币区块链上创建一笔交易,把 BTC 分发回用户。
如果 sBTC 签名者创建了一笔比特币交易来执行提现,他们就无法撤回,而且它在比特币区块链的每一个分叉上都有效。那么如果比方说,比特币区块链发生分叉,而 Stacks 层上的提现又被重组掉了,会发生什么?那就会在比特币区块链上留下一个无法追回的提现交易,把宝贵的 BTC 给了一个实际上从未在 Stacks 层提现吗 sBTC 的用户。
维持原始链的签名者能否强制矿工重放所有此前已确认的交易?
Stacks 区块链是真正建立在比特币之上的二层链,你可以编写智能合约,使其根据底层比特币区块链的观察结果表现出不同的行为。比如,你可以编写一个 Stacks 合约,规定“如果最新比特币区块哈希以偶数十六进制位结尾,就支付给 Jeff;如果以奇数十六进制位结尾,就支付给 Abigail。”现在,当比特币区块链发生重组时,你可以重放这笔最初支付给 Jeff 的交易,但它现在会支付给 Abigail;如果这个合约当时是在发放 sBTC,而 Jeff 又立刻执行了提现吗,会发生什么?
所以最终,要安全地处理一次提现,你需要足够确定它不会被重组掉。这意味着,只有在 sBTC 提现交易在 Stacks 区块链上发出之后的 6 个比特币区块之后,才能处理它(这是 sBTC 签名者所接受的最终性标准)。
但那么,为什么存款最快三个不,是最快能在一个比特币区块内完成?
还记得 Stacks 会随着比特币分叉吗?假设某人在比特币区块链上存入资金,试图铸造 sBTC,然后假设 sBTC 签名者立即铸造了 sBTC。如果比特币链发生分叉,导致 Stacks 区块链也发生分叉,会怎样?铸造会被重组掉!当然,这笔存款不再存在于比特币区块链上,但它也不在 Stacks 区块链上。如果这笔存款最终没有真正到达比特币区块链,sBTC 签名者就永远不会铸造 sBTC,所以根本没有什么可撤回的!
比特币链拥有最终决定权
总而言之,对于 sBTC 从 Stacks 层转到比特币层的操作,协议需要等待比特币达到足够的最终性;但从比特币层转到 Stacks 层的操作,在铸造时不需要等待最终性,因为如果比特币层发生重组,Stacks 层也会随之自动重组。
但从概念上讲,请记住,Stacks 区块链上的铸造调用,其最终性和包含比特币存款到 Stacks 层的比特币区块一样。如果你要在 Stacks 层铸造 sBTC,并且希望等它最终确定,你就需要等待足够数量的比特币区块,把它视为最终铸造完成,但这取决于你自己,而不是 sBTC 签名者。
最后更新于
这有帮助吗?