# 比特币重组

<div data-with-frame="true"><figure><img src="/files/67cfb9e28f5c1d60950810cfbb8b9559003b91b9" alt=""><figcaption></figcaption></figure></div>

由于比特币分叉，Stacks 交易不会发生显著重组。重组本身就相对少见，而且因比特币分叉而被重组的 Stacks 交易，其行为与被重组的比特币交易并无二致。随着未来进一步分析，纯粹位于 L2 链上的交易也许终有一天会完全不受影响。

理解这一概念，根本上就是理解 Nakamoto 之后的 Stacks 上的最终性。

{% hint style="info" %}
Stacks 不会自行分叉。其设计就是不会分叉，只有特殊例外；即便有 31% 的 Stackers 不想让它分叉，Stacks 也完全不可能自行分叉，即使如此，它也很可能只会在一个任期内发生。

Stacks 唯一会分叉的情况，是比特币分叉导致它分叉。
{% endhint %}

矿工并不是赢得生成一个区块的权利，而是赢得生成大量区块的权利；在这段时间里，我们称他们处于“任期”中。任期内生成的每一个 Stacks 区块，都至少需要 70% 的 Stackers 批准（签名），才能被纳入 Stacks 区块链。Stackers 正在监视比特币区块链，并且只会为赢得最新抽签结果的矿工所产出的区块签名。

现在，让我们设想比特币发生了重组，而 Stackers 正在观察一个如今已不再最优的比特币分叉。Stackers 基本上会回到他们所观察的那个分叉与新的最佳比特币分叉之间的最新共同抽签点，并从那里开始为之后各个任期中的区块签名。请注意，70% 的 Stackers 会同时做同样的事情；而当 70% 的人同意从新的比特币分叉上的最新任期开始签名时，就会出现一个新的、单一最优的 Stacks 区块链。

那么，那些在被重组的任期内已确认的交易会怎样？什么都不会发生。它们仍然留在 mempool 中，就像那个被重组的任期根本没发生过一样。对于 Stacks 区块链内的任何内容，一切都没问题。

这与比特币分叉导致比特币交易重组是完全一一对应的。如果一笔比特币交易接近链顶端，你就不应将其视为最终；如果一笔 Stacks 交易接近任期顶端，你也不应将其视为最终。

<details>

<summary>交易重放</summary>

由于至少有 70% 的签名者必须为纳入链中的任何 Stacks 区块签名，因此至少有 70% 的签名者知道在比特币分叉导致 Stacks 重组之前和之后的链状态。

这里有一个会使其难以执行的难点：如果某笔交易依赖于比特币区块链上某个也被重组的内容（例如一次 peg-in），那么这笔交易现在就会无效。污点分析是指你试图回答这样的问题：“哪些交易以一种使其在新链中无效（带污点）的方式与现在已成孤块的比特币区块链发生了交互”，以及“哪些交易与现在已无效（带污点）的交易发生了交互，从而它们现在也无效”。这会产生级联效应，但要执行任何形式的重放，都要求 Stackers 和矿工能够识别哪些交易根本可以被重放。

污点分析，以及随后对重放的强制执行，未来可以加入。

在首个版本中，Nakamoto 明确将 Stacks 区块链与比特币区块链绑定起来，使得在任何给定时点上，只有一个与比特币绑定的最优 Stacks 分叉。这与比特币区块链的行为完全一一对应，只不过是在任期尺度上。

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.stacks.co/learn/zh/block-production/bitcoin-reorgs.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
