# 转移证明（PoX）

<div data-with-frame="true"><figure><picture><source srcset="/files/dda8f99a0f61ca697c7860266951b7a1ff784254" media="(prefers-color-scheme: dark)"><img src="/files/d095f7689dee145a1c3f7bec7a2d91180b48c4a1" alt=""></picture><figcaption></figcaption></figure></div>

在前面的章节中，我们看了 Stacks 的愿景和理念，并详细讨论了它如何与比特币相连接，以及它如何在不修改比特币本身的情况下扩展功能。在本节中，我们将简要介绍实现这一点的出块机制：转移证明。

{% hint style="info" %}
本节将对转移证明做一个概念性的概述。若想了解出块在技术层面究竟是如何发生的更多细节，请查看以下章节： [出块](/learn/zh/block-production.md).
{% endhint %}

### 什么是转移证明？

Stacks 层依赖 STX 和 BTC 来实现其新颖的共识机制，称为转移证明（Proof of Transfer，PoX），该机制同时利用了 Stacks 和比特币两层。PoX 在精神上类似于比特币的工作量证明（PoW）共识：就像比特币 PoW 矿工消耗电力并以 BTC 获得奖励一样，Stacks PoX 矿工花费（已挖出的）BTC，并以 STX 获得奖励。

与 PoW 类似，PoX 使用单一领导者选举：PoX 矿工只需花费 BTC 即可竞标，他们按出价权重获得成为领导者的随机概率。领导者选举发生在比特币链上，而新区块则写入 Stacks 层。通过这种方式，PoX 复用了比特币矿工已经完成的工作，并不会消耗任何显著的额外电力：对于 Stacks 节点来说，仅需运行普通笔记本电脑/电脑以使用 BTC 进行竞标的成本。

与 PoW 类似，PoX 是无需许可的：任何人都可以成为 Stacks 矿工，只要他们愿意花费 BTC。此外，任何 STX 持有者都可以锁定自己的 STX（称为“stacking”）来参与 PoX 共识，并通过为系统做有用工作而获得比特币奖励，也就是作为去中心化比特币锚定的签署者。秉持比特币的理念，Stacker 会因其对系统的正向贡献而获得奖励，并因不良行为受到经济性抑制（但与有质押惩罚的权益证明系统不同，他们不会被“削减”）。

最后，PoX 共识的性质使 BTC 与 STX 之间的价格比率能够持续记录并在链上可用，作为一种链上比特币价格预言机。这对去中心化锚定很有价值，因为它消除了对外部预言机的需求，如关于该锚定机制的配套论文所述。

下图以流程图形式展示了 PoX 共识机制及其相关参与者之间的关系。

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

如流程图所示，转移证明还提供了两个关键动力，它们协同工作以保护并运行网络。

1. **经济层面** – BTC 从矿工转移到 Stacker，形成一种根植于比特币本身的双向激励结构。矿工提交 BTC 以参与出块，实际上是在竞争生成下一个 Stacks 区块的权利。作为回报，成功的矿工会获得新铸造的 STX 和交易费。另一方面，Stacker 锁定自己的 STX 以支持共识，并作为奖励获得矿工提交的 BTC。该机制将 Stacks 经济直接与比特币绑定，使参与者之间的激励保持一致，并将安全性锚定在真实的外部资产上，而不是仅仅依赖通胀或内部代币机制。
2. **程序层面** – 除了经济激励之外，PoX 还提供了技术协调层，用于决定区块如何生成、验证和最终确定。矿工在比特币上的 BTC 承诺作为领导者选举的输入，用以决定谁可以构建下一个 Stacks 区块。区块一旦生成，就会通过密码学方式关联并锚定到比特币，从而继承其结算保障。通过这种方式，PoX 不只是一个经济交换机制——它还是协调区块构建、排序和最终性的共识引擎，同时保持与比特币 L1 的可验证连接。

### 转移证明中的参与者是谁？

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

***

### PoX 核心组件概览

<details>

<summary>领导者选举（矿工）</summary>

**谁有资格挖出下一任期的 Stacks 区块？**

**参与者：矿工**

* 理念：花费 BTC 来赢得出块机会
* 通过以下方式进行单领导者选举 *密码学抽签*
* 嵌入 *可验证随机函数* （VRF）状态到比特币交易中
* 在每个比特币区块上产生一个确定但不可预测的胜者
* 通过区块提交进行挖矿：（区块哈希，VRF 种子）对
* VRF 种子 = hash(VRF 证明)

</details>

<details>

<summary>奖励集合（Stacker）</summary>

**那矿工花费的 BTC 去哪里了？**

**参与者：单独 stacking 或池化 stacking 的 Stacker**

* 理念：花费的 BTC（来自矿工）会发送给 STX 持有者
* 预期 BTC 支付 = 你的锁定量 / 总锁定量 的函数
* 锁定的 STX 永远不会离开你的账户，并会自动解锁
* 将无产出的 STX 移出流通
* 奖励周期：2100 个比特币区块
* 奖励阶段：前 2000 个比特币区块
* 准备阶段：最后 100 个比特币区块
* 锚定区块：准备阶段中确认的第一个 Stacks 区块
* 奖励集合：锚定区块中已锁定 STX 的快照

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

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

</details>

<details>

<summary>区块签名者（签名者）</summary>

**锁定的 STX 也能保护网络吗？**

**参与者：承担签名者角色的 Stacker**

* 理念：利用 PoX 收益激励良好的链服务质量
* 将 PoX 收益作为复制和排序区块的“薪资”
* Stacks 在你进行 stacking 时选择签名者公钥
* 签名者用带权签名签署来自矿工的区块（按奖励槽数量加权）
* 一旦 70% 以上的奖励槽签名确认，区块就会被追加
* 区块签名者集合每个奖励周期变化一次
* 假定 70% 以上的签名者在线且诚实
* 诚实的签名者投票拒绝（燃烧）故障 Stacker 随后的 BTC

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

</details>

***

### 技术实现细节

转移证明功能以 Clarity 智能合约的形式在 Stacks 网络上实现。

转移证明多年来经历了多个迭代。下面列出转移证明的不同智能合约实现。

<table><thead><tr><th width="107.99609375">版本</th><th width="131.1015625">日期</th><th width="228.8671875">主网合约</th><th data-type="content-ref">SIP</th></tr></thead><tbody><tr><td>PoX 4</td><td>2024-04-22</td><td><a href="https://explorer.hiro.so/txid/SP000000000000000000002Q6VF78.pox-4">SP000000000000000000002Q6VF78.pox-4</a></td><td><a href="https://github.com/stacksgov/sips/blob/main/sips/sip-021/sip-021-nakamoto.md">https://github.com/stacksgov/sips/blob/main/sips/sip-021/sip-021-nakamoto.md</a></td></tr><tr><td>PoX 3</td><td>2023-05-27</td><td><a href="https://explorer.hiro.so/txid/SP000000000000000000002Q6VF78.pox-3">SP000000000000000000002Q6VF78.pox-3</a></td><td><a href="https://github.com/stacksgov/sips/blob/main/sips/sip-022/sip-022-emergency-pox-fix.md">https://github.com/stacksgov/sips/blob/main/sips/sip-022/sip-022-emergency-pox-fix.md</a></td></tr><tr><td>PoX 2</td><td>2023-03-20</td><td><a href="https://explorer.hiro.so/txid/SP000000000000000000002Q6VF78.pox-2">SP000000000000000000002Q6VF78.pox-2</a></td><td><a href="https://github.com/stacksgov/sips/blob/main/sips/sip-015/sip-015-network-upgrade.md">https://github.com/stacksgov/sips/blob/main/sips/sip-015/sip-015-network-upgrade.md</a></td></tr><tr><td>PoX 1</td><td>2021-01-15</td><td><a href="https://explorer.hiro.so/txid/SP000000000000000000002Q6VF78.pox">SP000000000000000000002Q6VF78.pox</a></td><td><a href="https://github.com/stacksgov/sips/blob/main/sips/sip-007/sip-007-stacking-consensus.md">https://github.com/stacksgov/sips/blob/main/sips/sip-007/sip-007-stacking-consensus.md</a></td></tr></tbody></table>

当前 PoX 4 合约的演示说明可在以下位置查看： [示例合约](/cookbook/clarity/example-contracts.md) 一节中了解更多关于这一过程的信息。

***

### 总结：一句话理解 PoX

• PoX 每个 BTC 区块会随机选出一位单领导者区块矿工\
• PoX 激励矿工生成 STX 区块并赚取 STX 区块奖励 + 交易费\
• PoX 激励 STX 持有者锁定 STX，以从矿工那里获得 BTC 收益\
• PoX 抑制 BTC L1 矿工进行干扰\
• PoX 激励作为签名者的 Stacker 维护网络健康

***

### 其他资源

* \[[SIP-001](https://github.com/stacksgov/sips/blob/main/sips/sip-001/sip-001-burn-election.md)] SIP-001 全面列出了选择比特币来保护 Stacks 的原因。
* \[[SIP-007](https://github.com/stacksgov/sips/blob/main/sips/sip-007/sip-007-stacking-consensus.md)] 关于 stacking 和转移证明的原始设计细节。
* \[[SIP-021](https://github.com/stacksgov/sips/blob/main/sips/sip-021/sip-021-nakamoto.md)] Nakamoto 升级：快速且可靠的区块
* \[[Stacks 开发者 YT](https://youtu.be/YynwIJIXJWw?si=9DXsd9PzMN14xt-L)] PoX：幕后机制
* \[[Stacks 开发者 YT](https://youtu.be/4UJ3ZK8JsrI?si=m8VSVIuCwIyOe3pe)] 开发者如何测试 Stacks 网络？
* \[[Hiro YT](https://youtu.be/2Bmo1cK0C8k?si=uiYaXudIhjxkNaS6)] Stacks 转移证明智能合约详解


---

# 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/stacks-101/proof-of-transfer.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.
