> For the complete documentation index, see [llms.txt](https://docs.stacks.co/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.stacks.co/learn/zh/block-production/mining.md).

# 区块如何挖出？

<div data-with-frame="true"><figure><img src="https://2842511454-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FH74xqoobupBWwBsVMJhK%2Fuploads%2FKP7TV3rUxRBugJITtEOy%2Fmining-section-cover.png?alt=media&#x26;token=a3891617-2b64-4742-9a0c-004c6a70f944" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}
**构建者资源**

* 如果你想运行自己的 Stacks 矿工， [这里](https://docs.stacks.co/operate/run-a-miner).
  {% endhint %}

#### 全景概览

* PoX 每个 BTC 区块随机选择一个单领导者区块矿工
* PoX 激励矿工制作 STX 区块并赚取 STX 奖励 + 交易费
* 矿工发送 *区块提交* 交易到 Bitcoin L1。
* 区块提交包含：（区块哈希，VRF 种子）对
* 每个 Bitcoin 区块都会产生一个确定但不可预测的赢家
* PoX 通过 ATC-C 机制抑制 BTC L1 矿工的干扰

***

### 简介

在 Stacks 挖矿中，矿工通过花费比特币来获得生成新 Stacks 区块的权利。Stacks 并不是引入一套完全独立的共识机制，而是在适应并扩展 Bitcoin 现有的工作量证明。Stacks 依赖 Bitcoin 的安全性和经济权重来保护构建在其之上的层。

当矿工在挖矿过程中提交 BTC 时，这些比特币不会被销毁或浪费。在 PoX-5 下，它们会被路由到奖励池，自动桥接到 sBTC，并通过收益瀑布分配给质押参与者：首先是与比特币配对的协议债券，然后是仅 STX 的质押者以及协议储备。矿工到质押者的这条比特币流向，是 Proof of Transfer（PoX）背后的核心创新。BTC 的“转移”将 Stacks 锚定到 Bitcoin 的安全性，同时让矿工与网络参与者的激励保持一致。

### 挖矿流程拆解

在 Stacks 的前一版本中（Nakamoto 升级之前），Stacks 矿工会以与 Bitcoin 区块一一对应的节奏挖出新的 Stacks 区块。Nakamoto 之后就不再是这样了。按照 Nakamoto 规则，矿工会被选中担任一个对应于某个 Bitcoin 区块的任期。在此任期内，矿工会构建并提议多个 Stacks 区块（大约每 10 秒一个），由签名者进行批准并追加。

{% hint style="info" %}
[什么是 Nakamoto 升级？](/learn/zh/block-production/what-was-the-nakamoto-upgrade.md)
{% endhint %}

<div data-with-frame="true"><figure><img src="https://2842511454-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FH74xqoobupBWwBsVMJhK%2Fuploads%2Fca0oJCagFYDaEU3vw1e4%2Fmining-flow.png?alt=media&#x26;token=1d65f252-c0b3-4614-8166-726a22de4f42" alt="The mining cycle from registration through commitment and election to block assembly"><figcaption><p>从头到尾的挖矿周期</p></figcaption></figure></div>

矿工运行启用了挖矿功能的 Stacks 节点来参与 PoX 机制。节点负责处理每个阶段：

1. **注册**：矿工通过向网络发送共识数据，为未来的选举进行注册
2. **承诺**：已注册矿工转移比特币以参与选举。已承诺的 BTC 会路由到 PoX-5 奖励池，在那里桥接为 sBTC，并向质押参与者支付。
3. **选举**：可验证随机函数会为新的任期选出一名矿工，在 Stacks 区块链上写入区块
4. **组装**：当选矿工从内存池中拉取交易来写入新区块，并以新的 STX 代币形式收取奖励

### 矿工选择过程

不同于 PoW 中的区块竞赛，Stacks 使用一种称为密码学抽签的单领导者选举过程。这通过嵌入在 Bitcoin 交易中的可验证随机函数状态来实现。这样一来，每个 Bitcoin 区块都会产生确定但不可预测的赢家。

<details>

<summary>什么是密码学抽签？</summary>

密码学抽签是一种使用密码学从一个集合中随机选择一个或多个实体的过程。这是一种去中心化且可验证的方式，可用于选择各种任务的参与者，例如共识协议、彩票和拍卖。

更具体地说，在 Stacks 语境中，矿工抽签是带权重的密码学抽签过程，通过它将某个矿工候选者选为下一个矿工（领导者）。

</details>

每个 Stacks 矿工都必须在 Bitcoin 交易中注册一个 VRF 公钥。完成后，他们就可以发起 *区块提交* Bitcoin 上的交易。Bitcoin 上的区块提交交易包含：

`（区块哈希，VRF 种子）对`

这些区块提交交易不仅包含其想要生成的区块流的指针，还包含为下一次抽签重新播种下一个 VRF 所需的所有相关信息。矿工不能篡改 VRF 种子。这由以下属性强制保证：

`VRF 种子 = 哈希（VRF 证明）`

而该 VRF 证明只能由矿工的 VRF 私钥生成。

<details>

<summary>区块提交彼此如何关联？</summary>

<div data-with-frame="true"><figure><img src="https://2842511454-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FH74xqoobupBWwBsVMJhK%2Fuploads%2F9l4YJ1AOry3SSTL724wd%2Fmining-leader-election-flow.png?alt=media&#x26;token=6dcfaefd-1362-4d10-a530-b726584b91d8" alt="Successive block commits, each carrying a VRF seed that re-seeds the next sortition"><figcaption><p>一个区块提交如何为下一个区块提供输入</p></figcaption></figure></div>

</details>

{% hint style="info" %}
要被纳入某个任期，矿工的区块提交必须包含在一个 Bitcoin 区块中。如果矿工在提交后想更新其承诺，可以使用 Bitcoin 的 Replace-By-Fee。
{% endhint %}

#### 挖出下一个区块的概率

被选中去挖下一个区块的矿工，取决于矿工转移的 BTC 数量。矿工挖出下一个区块的概率使用 Assumed Total Commitment with Carryforward（ATC-C）的一种变体来确定 [MEV](https://github.com/stacksgov/sips/blob/main/sips/sip-021/MEV-Report.pdf) 的缓解策略来分配区块奖励给矿工。矿工赢得抽签并获得当前任期的概率，将基于一个函数来计算，该函数考虑了在当前抽签之前各区块上的总区块提交支出。

虽然协议并未强制规定最低 BTC 承诺，但在实践中存在由尘埃限制所约束的下限：如果某笔交易的手续费超过了所花费输出的价值，就会被视为尘埃。尘埃是如何 [计算](https://github.com/bitcoin/bitcoin/blob/master/src/policy/policy.cpp#L14) 取决于多个因素。我们发现每个输出 5,500 聪是一个不错的最低下限。在 PoX-5 下，一个区块提交只携带一个 PoX 输出，因此建议每个区块至少承诺 5,500 聪。

要计算需要发送的 BTC 数量，矿工应当：

* 猜测明天的 BTC/STX 价格（100 个区块之后）
* 猜测所有矿工承诺的比特币总量

{% hint style="info" %}
签名者负责验证和追加新区块，并执行矿工任期变更。
{% endhint %}

#### 区块提交交易（在 Bitcoin 上）

在 PoX-5 下，矿工将比特币提交到 **一个** 地址中，每个领导者区块提交交易里都如此：即为奖励池提供资金的 sBTC 桥接地址。同样的输出形式适用于周期中的每个区块，包括准备阶段。不会发送到燃烧地址。这取代了 PoX-5 之前的模型，在该模型中，每次提交都会向从 stacking 参与者奖励集合中选出的两个地址付款。

<div data-with-frame="true"><figure><img src="https://2842511454-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FH74xqoobupBWwBsVMJhK%2Fuploads%2FmPgihwk4yyZWRwlcHQ9k%2Fminer-btc-flow.png?alt=media&#x26;token=a2046c69-1021-414b-a487-d8837a96c2f5" alt="The block commit paying one output from the miner address to the sBTC bridge address on Bitcoin, and the automated flow on Stacks from the pox-5 contract through signer-managers to stakers"><figcaption><p>矿工承诺的 BTC 最终去向</p></figcaption></figure></div>

<details>

<summary>区块提交交易实际上长什么样？</summary>

* 看看这个 [短片](https://youtube.com/shorts/HPRsn-aSYrg?si=Y7hA7_9BeHFxV0zz) ，了解 Bitcoin 上的区块提交交易包含什么。
* 查看 Bitcoin 上一笔区块提交交易 [这里](https://mempool.space/tx/42834cb7ec9ca3e2b51e2ff16bd809ae049c925ed8d3da099c9ce3d5292d2a91).

</details>

### 矿工奖励

矿工会获得他们赢得任期内所产生的 Stacks 区块 coinbase 奖励。

奖励为固定的 **每个任期 1,000 STX**. [SIP-045](https://github.com/stacksgov/sips/blob/main/sips/sip-045/sip-045-pox-5-bitcoin-staking.md) 在 Epoch 4.0 激活时将 coinbase 恢复为 1,000 STX，并移除了 SIP-029 所设定的递减计划，因此不再存在后续的计划性减少。

#### 交易费

矿工还会获得其所生成任意区块中的交易所产生的 Stacks 费用。

#### 奖励成熟期

区块奖励和交易费需要在 Bitcoin 区块链上经过 100 个区块才能成熟。成功挖出一个区块后，你的奖励会在大约 24 小时后显示在你的 Stacks 账户中。

### Stacks 挖矿实践

Stacks 由数量不多的矿工运行。这是激励机制运作方式的结果，而不是激励机制的缺失。

Stacks 矿工的功能类似于 L2 系统中的排序器，因为他们只负责构建和提议新区块，而不负责将其追加到链上。但与大多数仅有单一中心化排序器的 Ethereum L2 不同，Stacks 始终至少有 4-5 个矿工开放加入，任何人都可以参与。

Stacks 上的区块生产将工作分开：矿工构建并提议区块，而由质押者锁定的 STX 支持的签名者负责验证并将其追加。这种分离限制了矿工能够对链做的事情。

矿工不能重组链。在最坏的情况下，他们可以省略某些类型的交易，而运行你自己的矿工可以解决这个问题。

网络中更多的矿工意味着质押者获得的奖励更少，因为矿工必须将更多资金用于 Bitcoin L1 费用，而不是将其送入奖励池。

<details>

<summary><strong>难道不是矿工越多，竞争越激烈，奖励也越多吗？</strong></summary>

更多矿工意味着更少奖励的原因是，矿工会按照经济理性行事，而且他们可用的 BTC 不是无限的。

矿工支付其 PoX 承诺以及 Bitcoin 费用，以换取赢得 coinbase（1,000 STX）以及某个任期内费用的机会。如果矿工更多，那么每个矿工支付的金额都会更少，因为他们赢得的概率更低。他们不可能不断支付越来越多的 BTC，因为最终会完全无利可图，所以矿工为了尝试赢得任期可花费的 BTC 数量是有上限的。

随着他们支付更少，Bitcoin 费用会成为其支出中更重要的一部分，这也会降低他们赢得任期的概率。

下面是一个具体例子：

假设 Stacks 的交易价格是每个 STX 1,000 聪。

如果所有人都按逻辑行事并且忽略 Stacks 费用，那么所有矿工的总支出将少于 1,000,000 聪（1,000 STX 的 coinbase \* 1000 聪/STX）。

如果有 5 个矿工，那么可能是 10,000 聪（每笔交易 2,000 聪）流向 Bitcoin 费用，990,000 聪流向 PoX。

如果有 100 个矿工，那么会有 200,000 聪流向 Bitcoin 费用，800,000 聪流向 PoX。

</details>

这会形成一种自然的经济均衡，其中：

{% stepper %}
{% step %}
**足够多的矿工参与，以确保区块能够可靠地产生**
{% endstep %}

{% step %}
**质押者获得最优奖励**
{% endstep %}

{% step %}
**网络在没有不必要挖矿竞争的情况下保持抗审查性**
{% endstep %}
{% endstepper %}

这一设计是有意为之。质押者充当互补的安全保障者，通过 PoX 获得以比特币计价的奖励，因此 Stacks 能在不需要大量矿工为了争夺区块生产权而过度竞争的情况下实现安全性。

与其他由矿工单独决定主链的链不同，Stacks 的双主体系统提供了更强的保证：

* 矿工不能强制写入无效交易或区块（签名者不会为其签名，即使签了，节点也不会接受）
* 没有任何矿工可以单方面重组链（签名者控制链的最终性）
* 接受一个区块需要至少承载总签名者权重 70% 的签名，确保在区块被接受前达成广泛共识

矿工与签名者之间这种职责分离，正是矿工数量少并不是弱点的原因。

<details>

<summary>微区块去哪了？</summary>

微区块是上一版本 Stacks 的遗留功能，现在已经不存在了。它们最初被创建出来是为了提高交易吞吐量，但在没有 Nakamoto 功能的情况下，它们在实践中从未真正发挥作用。

Nakamoto 则改用一种能以快速节奏生成 Stacks 区块的区块生产结构。参见 [什么是 Nakamoto 升级？](/learn/zh/block-production/what-was-the-nakamoto-upgrade.md).

</details>

### Bitcoin MEV 缓解

矿工可提取价值（MEV）一直是许多区块链长期存在的问题，包括 Nakamoto 之前的 Stacks。

MEV 指的是矿工通过操纵其所生成区块中的交易纳入和排序而可能提取的利润，这可能导致不公平行为并削弱网络信任。

在 Stacks 的 Nakamoto 之前版本中，拥有 Bitcoin 大量算力占比的 Bitcoin 矿工能够审查其他 Stacks 矿工的承诺交易，从而确保他们在自己同时也是 Bitcoin 区块赢家时，能够赢得那些 Stacks 区块的区块奖励和费用。

Nakamoto 系统使用 Assumed Total Commitment with Carryforward（ATC-C）的一种变体 [MEV](https://github.com/stacksgov/sips/blob/main/sips/sip-021/MEV-Report.pdf) 的缓解策略来分配区块奖励给矿工。矿工赢得区块并获得当前任期的概率，将基于一个函数来计算，该函数考虑了当前区块之前各区块上的总区块提交支出。

<div data-with-frame="true"><figure><img src="https://2842511454-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FH74xqoobupBWwBsVMJhK%2Fuploads%2FKR4LNqlqDmrC4hBmUwOB%2FATCC-formula.png?alt=media&#x26;token=ade7ed3f-2d1e-4124-8768-467069afca60" alt="The Assumed Total Commitment with Carryforward formula"><figcaption><p>ATC-C 公式</p></figcaption></figure></div>

ATC 方案允许某个区块没有有效赢家。TenureChange-Extend 交易可减轻错过区块带来的大多数不利影响。

***

#### 更多资源

* \[[Stacks YT](https://youtu.be/F31B-my510A?si=E0SRw0bbhuevB4kj)] Stacks 与 Bitcoin 矿工的关系
* \[[Stacks YT](https://youtu.be/bhVyM5CYoh4?si=3bQl8Q_iJ_3z5jX-)] Bitcoin 的长期安全预算与矿工激励


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.stacks.co/learn/zh/block-production/mining.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
