# Stacking：STX 持有者如何贡献

<div data-with-frame="true"><figure><img src="https://629346125-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FH74xqoobupBWwBsVMJhK%2Fuploads%2FAkgFBWqIWWeT5ZeNwVzp%2Fstaking-cover.png?alt=media&#x26;token=82fd722d-efae-4218-ae0e-42ac6215fe4a" alt=""><figcaption></figcaption></figure></div>

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

* 所有 stacking 操作都发生在 PoX 合约实现中， [这里](https://explorer.hiro.so/txid/0xc6d6e6ec82cabb2d7a9f4b85fcc298778d01186cabaee01685537aca390cdb46).
* 要开始 stacking STX， [这里](https://app.gitbook.com/s/4cpTb2lbw0LAOuMHrvhA/stacking-stx).
  {% endhint %}

#### 全局概览

* Stacking 会锁定 STX，以帮助保护网络并赚取 BTC 奖励。
* 它是转移证明（PoX）的一部分，在其中矿工花费 BTC，而这些 BTC 会分配给 Stackers。
* STX 会按固定周期锁定，在此期间不能移动。
* 直接 Stack 有最低门槛，但用户可以委托给池。
* 该模型将矿工和持有者的激励保持一致，同时以比特币作为锚定。

***

## 简介

Stacking 会通过将 Stacks（STX）代币持有者的代币锁定一段时间，并让他们以共识关键签名者的身份参与，从而为网络提供有价值的服务，并以比特币奖励他们。如果你不熟悉 Stacks 中签名者的概念，请务必查看 [签名部分](https://docs.stacks.co/learn/zh/block-production/signing)。本文档是对 stacking 及其工作方式的概念性概述。

{% hint style="info" %}
请注意，SIP-007 描述的是 Nakamoto 之前的 stacking。虽然大部分功能保持不变，但现在 stackers 还多了一项责任，即按照 [SIP-021](https://github.com/stacksgov/sips/blob/feat/sip-021-nakamoto/sips/sip-021/sip-021-nakamoto.md).
{% endhint %}

`pox-4.clar` 是 stacking 合约。如果你有兴趣尝试包括状态变更、单独 stacking 和池 stacking 在内的转移证明用例，所需的所有函数都可以在已部署的合约中找到：

* 测试网： [ST000000000000000000002AMW42H.pox-4](https://explorer.hiro.so/txid/0xfba7f786fae1953fa56f4e56aeac053575fd48bf72360523366d739e96613da3?chain=testnet)
* 主网： [SP000000000000000000002Q6VF78.pox-4](https://explorer.hiro.so/txid/0xc6d6e6ec82cabb2d7a9f4b85fcc298778d01186cabaee01685537aca390cdb46?chain=mainnet)

<details>

<summary>Stacking 与 Staking</summary>

虽然在 Stacks 网络上进行 stacking 在概念上可能与 staking 类似，但 Stacks 不是 PoS 网络，而且两者有几个关键差异。

Stacks 中的 stacking 与 PoS 网络中的 staking 之间有两个主要区别。

**收益以燃烧链代币生成**

在 staking 中，用户锁定一种代币，并以相同代币获得收益。而在 stacking 中，用户锁定一种代币（STX），并以“燃烧链”代币（BTC）获得收益，而不是以被锁定的同一种代币。 在 PoX 中，收益来自有限的外部来源（来自 Stacks 矿工的比特币存款）。在 PoS 中，收益来自货币自身的发行计划。

这些发行率是如何设定的？在以太坊中，发行率由网络使用情况决定。以太坊的目标是创造通缩型货币供应，因此发行率会根据网络使用情况而定。要使以太坊交易被视为有效，它必须包含一个在交易执行期间被销毁的基础费用。 [发行率由算法决定](https://ethereum.org/en/roadmap/merge/issuance/#post-merge) 会按区块逐块变化，取决于有多少 ETH 因这些基础费用加上正常 gas 费用而被销毁。

Stacking 不会在相同代币中生成收益，因此无需为 stacking 奖励发行新的 STX。Stacking 收益需要外部代币（BTC）的输入。Stacks 确实有发行率并会生成新的 STX 代币，但该过程与 stacking 以及 stacking 收益机制是分开的。

**无削减惩罚**

尽管 stackers 通过担任签名者在 Stacks 中履行了共识关键角色，但 PoX（转移证明）中没有削减惩罚的概念。

相反，如果 stackers 没有履行签名者职责，他们只会无法解锁自己的 STX 代币，并且不会收到 BTC 奖励。

Stacking 是一种内置操作，是“转移证明”（PoX）机制所必需的。PoX 机制由 Stacks 网络上的每个矿工执行。

</details>

#### 锁定与解锁 STX

当 STX 代币被“锁定”时，不会发生 STX 代币转移。锁定 STX 代币是非托管的，STX 代币仍保留在你的钱包中。当你发起 stacking 交易时，这些代币会在协议层面被锁定并且不可花费，但它们并不会离开 stacker 的钱包。

在锁定期结束时，它们会自动解锁（在协议层面可再次花费）。这一过程是隐式发生的；没有直接的解锁交易。

***

## Stacking 流程拆解

### 单独 Stacking 流程

单独 stacking 遵循通用的 stacking 流程。你自己 stack 自己的 STX 代币，并运行自己的 signer。要以单独 stacker 的身份运行，你必须拥有最低数量的 STX 代币。这个最低数量是动态的，可以通过查看 [API 的 pox 端点](https://api.testnet.hiro.so/v2/pox) 中的 `min_threshold_ustx` 字段找到。

<div data-with-frame="true"><figure><img src="https://629346125-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FH74xqoobupBWwBsVMJhK%2Fuploads%2F4BXvZT7uLVfdbysSz4Iu%2Fstacking-contract-flow.png?alt=media&#x26;token=9d7a8dd7-529e-40b9-8f37-56ea874a1f09" alt=""><figcaption></figcaption></figure></div>

{% stepper %}
{% step %}
**发起 API 调用以获取即将到来的奖励周期的详细信息**

查询网络以了解即将到来的周期参数和时间安排。
{% endstep %}

{% step %}
**确认某个特定 Stacks 账户的资格**

验证该账户满足最低要求并有资格参与。
{% endstep %}

{% step %}
**确认 BTC 奖励地址和锁定时长**

指定用于接收支付的比特币地址，并输入所需的锁定期限。
{% endstep %}

{% step %}
**广播 stacking 交易以锁定 STX**

该交易会被广播，STX 代币将被锁定。这必须在下一个奖励周期的准备阶段之前发生（即当前奖励阶段最后 100 个比特币区块）。
{% endstep %}

{% step %}
**奖励周期执行并发送 BTC 奖励**

stacking 机制会执行奖励周期，并将奖励发送到已配置的 BTC 奖励地址。
{% endstep %}

{% step %}
**在锁定期间监控解锁时间和奖励**

在锁定期内，你可以获取有关解锁时间、预期奖励等详细信息。
{% endstep %}

{% step %}
**代币在锁定期结束后释放**

一旦锁定期结束，代币就会再次变为可花费。
{% endstep %}

{% step %}
**显示奖励历史**

显示以前奖励周期的收益等历史详情。
{% endstep %}
{% endstepper %}

{% hint style="info" %}
请记住，奖励周期的目标时长约为 2 周。该时长基于比特币网络的目标出块时间（10 分钟），并且有时可能会更长，原因是 [确认时间差异](https://www.blockchain.com/charts/median-confirmation-time) 来自比特币网络。
{% endhint %}

### 委托（池）Stacking 流程

<div data-with-frame="true"><figure><img src="https://629346125-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FH74xqoobupBWwBsVMJhK%2Fuploads%2F1GdYDRUtUiThkzuOPIay%2Fstacking-delegation-contract-flow.png?alt=media&#x26;token=c7d74791-7948-4e51-ad30-b8f159ca0bb0" alt=""><figcaption></figcaption></figure></div>

* 在代表代币持有者进行 stacking 之前，委托者必须获得账户所有者的授权。授权会限制委托者可 stack 的最大数量；该最大值可以设得高于可用资金。一个账户只能关联一个委托者。
* 账户设置委托关系。它们可以选择性地限制必须用于支付的比特币奖励地址，并指定一个到期的 burn block 高度以限制委托期限。
* 委托者会从不同账户中锁定 STX（“聚合阶段”），直到达到参与 stacking 所需的最低数量。
* 一旦委托者锁定了足够的 STX，他们就可以最终确认并承诺参与下一个奖励周期。
* 某些委托关系可能允许 STX 持有者直接从矿工那里接收支付。
* 委托可以根据到期规则自动终止，或通过主动撤销委托权利来终止。

***

## 代币持有者资格

Stacks（STX）代币持有者不会自动获得 stacking 奖励。要参与，他们必须：

* 在奖励周期开始前承诺参与
* 至少承诺最低数量的 STX 代币以确保获得一个奖励席位，或者与他人一起 pooling 以达到最低要求
* 将 STX 代币锁定一段指定的时间
* 提供一个受支持的比特币地址以接收奖励
* 维护其 signer 软件（如果他们运行 signer）

<div data-with-frame="true"><figure><img src="https://629346125-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FH74xqoobupBWwBsVMJhK%2Fuploads%2FrsH4O4NUdWhso50IL1bE%2Fstacking-dynamic-minimum.png?alt=media&#x26;token=9a88cf88-da35-4d81-bc1b-780f24dfc24d" alt=""><figcaption></figcaption></figure></div>

代币持有者有多种提供商和工具来支持他们参与 stacking。Stacks 网站包含一个 [池和 stacking 选项列表](https://www.stacks.co/learn/stacking#startstacking).

## Stacking 周期

Stacking 会发生在 2100 个比特币区块的奖励周期中（约两周）。奖励周期分为两个阶段：准备阶段和奖励阶段。

<div data-with-frame="true"><figure><img src="https://629346125-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FH74xqoobupBWwBsVMJhK%2Fuploads%2FsH3QgBhdsNh5hIDemVIl%2Fstacking-cycles.png?alt=media&#x26;token=9a234a5e-0537-41dd-a573-7ccf8b22e7ba" alt=""><figcaption></figcaption></figure></div>

* 准备阶段持续 100 个比特币区块，在此期间，下一奖励阶段的新 stackers 会由 PoX 锚定区块选出（详见 SIP-007）。
* 由于 Stacks 在 Nakamoto 升级后不会分叉，PoX 锚定区块总是在下一个奖励周期开始前 100 个比特币区块时就已知。它是准备阶段之前的最后一个 tenure-start 区块。
* PoX 锚定区块会识别出下一个 stackers。他们有 100 个比特币区块的时间来为签署 Stacks 区块做准备，包括完成用于签名区块的分布式密钥生成轮次。
* PoX 合约要求 stackers 在他们进行 stacking 或委托 stacking STX 时注册其区块签名密钥，以便整个网络能够验证区块签名。

此过程由 [运行 signer](https://app.gitbook.com/s/4cpTb2lbw0LAOuMHrvhA/run-a-signer) 随后以该 signer 的身份执行 stacking 操作来处理。

***

## Stacking 与签名

Stacking 和签名是不同的操作，但两者都必不可少。签名者必须 stack 他们的 STX 代币，而如果没有关联的签名信息，你就不能 stack STX。具体细节取决于单独 stacking 还是委托 stacking。

<div data-with-frame="true"><figure><img src="https://629346125-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FH74xqoobupBWwBsVMJhK%2Fuploads%2F2AHP0uYVRDurc6eKsMI1%2Fstacking-vs-signing.png?alt=media&#x26;token=ed8f5105-8c84-4137-9e4f-70eea2d61d69" alt=""><figcaption></figcaption></figure></div>

#### 单独 Stacking

如果你进行单独 stacking，你有两个签名选项。

**运行你自己的 signer：**\
你可以按照“如何运行 signer”指南来运行自己的 signer。这需要运行机器的技术知识和资源。详见该指南。

**与另一位 signer 合作：**\
如果你不想运行自己的 signer，你可以与另一位 signer 合作，并在你的 stacking 交易中包含他们的签名。相关操作详情见 [Stack STX](https://app.gitbook.com/s/4cpTb2lbw0LAOuMHrvhA/stacking-stx) 指南。

#### 委托 Stacking

如果你将 STX 委托给池运营者，你就不需要运行 signer。池运营者会执行实际的 stacking 交易，并负责运行 signer。

如果你是池运营者，请查看 [operate-a-pool 指南](https://app.gitbook.com/s/4cpTb2lbw0LAOuMHrvhA/stacking-stx/operate-a-stacking-pool).

***

## 如何以及在哪里进行 Stacking

stacking 的选项包括单独 stacking、参与池、使用交易所以及流动性 stacking。Stacks 网站上有一个 [stacking 页面](https://www.stacks.co/learn/stacking) 介绍这些选项。

有关如何 stack 的详细说明，请参阅 [Stack STX 指南](https://app.gitbook.com/s/4cpTb2lbw0LAOuMHrvhA/stacking-stx).

用于 stacking 数据和统计的工具和浏览器：

* <https://app.signal21.io/stacks>
* <https://www.stacking-tracker.com/>
* <https://www.stakingrewards.com/calculator?asset=stacks>
* <https://stacking.tools/>

***

### 其他资源

* \[[Stacks YT](https://youtu.be/x3ESWoA61yM?si=9M3s2QgarTfYzm0s)] 什么是 Stacking？在 Stacks 上赚取比特币 ft. Kate Parkman
* \[[Stacks YT](https://youtu.be/cUq4_vbZfUM?si=anrHyckZS5mi1Wu-)] 赚取比特币奖励：Stacking 你的 STX 如何运作（分步）
* \[[Stacks YT](https://youtu.be/Taa7fb3dSqA?si=doqOLpi3YmbwJ-Lg)] Stacking 简介 ft. Hank Stoever
