入钩(Peg-in)与出钩(Peg-out)持续时间

理解为什么存入 BTC 到 sBTC 的时间与将 sBTC 提取回 BTC 不同。

为什么充值如此快速而提现如此缓慢?

sBTC 允许用户通过一种称为 sBTC 的封装代币在 Stacks L2 上使用他们的 BTC。将 sBTC 转移到 Stacks L2 可能只需耗时一个比特币区块,但将 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 区块链会随着比特币区块链而分叉。”

现在我们理解了这种分叉机制,让我们来看看为什么从 Stacks 层转出必须如此缓慢。

为什么从 sBTC 转回 BTC 需要更多时间

sBTC 作为一个智能合约可交互的代币存在于 Stacks 层。要将 sBTC 从 Stacks 层转移到比特币层,sBTC 的所有者必须调用一个智能合约来发起我们所称的“提现”序列。这会让“sBTC 签名者”(与前面提到的签名者不同)知道他们需要在比特币区块链上创建一笔交易,将 BTC 分发回用户。

如果 sBTC 签名者创建了一笔在比特币区块链上执行提现的交易,他们就无法撤回该交易,而且该交易将在比特币区块链的每个分叉上有效。那么如果比特币区块链发生分叉并且 Stacks 层上的提现被重组移除了,会发生什么?那么在比特币区块链上就会出现一笔无法挽回的提现交易,把宝贵的 BTC 交给一个从未在 Stacks 层提现其 sBTC 的用户。

chevron-right维护原始链的签名者能否强制矿工重放所有先前已确认的交易?hashtag

Stacks 区块链是真正位于比特币之上的第 2 层,你可以编写智能合约来根据对下层比特币区块链的观察而产生不同行为。例如,你可以编写一个 Stacks 合约,规定“如果最新的比特币区块哈希以偶数十六进制数字结尾则支付给 Jeff,否则支付给 Abigail。”现在当比特币区块链发生重组时,你可以重放这笔原本支付给 Jeff 的交易,但它现在支付给 Abigail,如果这个合约当时正在分发 sBTC,会发生什么?更进一步,如果 Jeff 随即立刻执行一次提现,又会怎样?

因此最终,为了安全地处理一次提现,你需要有足够的把握认为它不会被重组移除。这意味着只有在 sBTC 提现交易在 Stacks 区块链上被创建后经过 6 个比特币区块(这是 sBTC 签名者能接受的最终性标准)之后,才能处理该提现。

但那为什么充值在最快情况下可以在一个比特币区块内完成?

还记得 Stacks 会随着比特币分叉吗?假设有人在比特币区块链上进行了充值以尝试铸造 sBTC,然后假设 sBTC 签名者立即铸造了 sBTC。如果比特币链发生分叉导致 Stacks 区块链也分叉,会发生什么?铸造会被重组移除!确实,该充值不再存在于比特币区块链上,但它在 Stacks 区块链上也不存在。如果该充值从未在比特币区块链上实际落定,sBTC 签名者就永远不会铸造 sBTC,因此也不存在需要收回的东西!

比特币链拥有最终决定权

总而言之,对于将 sBTC 从 Stacks 层转入比特币层的操作,协议需要等待比特币达到足够的最终性,但从比特币层到 Stacks 层的转移在铸造时不需要等待最终性,因为如果比特币层发生重组,Stacks 层会相应地自行重组。

但从概念上记住,在 Stacks 区块链上的铸造调用与包含将 BTC 存入 Stacks 层的比特币区块同样具有最终性。如果你在 Stacks 层铸造 sBTC 并且想等待其达到最终性,你将需要等待适当数量的比特币区块来认为它已最终铸造,但这是由你决定的,而不是由 sBTC 签名者决定的。

最后更新于

这有帮助吗?