Files
solana/docs/i18n/zh/docusaurus-plugin-content-docs/current/cli/delegate-stake.md
Justin Starry a1df57a4ea Add chinese translations to docs (#17125)
* import zh translations

* Fix broken links

* fix whitespace
2021-05-09 00:46:24 +08:00

150 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: 委托您的质押
---
通过 [ 获取 SOL ](transfer-tokens.md) 以后,您可以通过 _stake_ 将它委托给一个验证节点。 质押Stake就是在 _stake account_ 中的代币。 Solana 根据质押权重为验证节点分配投票权重,权重会影响它们在区块链中决定下一个有效交易区块。 然后 Solana 会按周期生成新的 SOL 来奖励质押者和验证节点。 您委托的代币越多,获得的奖励就越高。
## 创建一个质押账户
要委托代币,您首先要将代币转入一个质押帐户。 而要创建一个帐户,您需要一个密钥对: 它的公钥将作为 [质押账户地址](../staking/stake-accounts.md#account-address)。 此处无需密码或加密;此密钥对将在创建密钥账户后被丢弃。
```bash
solana-keygen new --no-passphrase -o stake-account.json
```
输出结果将在文本 `pubkey:` 后面包括该地址。
```text
pubkey: GKvqsuNcnwWqPzzuhLmGi4rzzh55FhJtGizkhHaEJqiV
```
复制公钥并将它安全地存储起来。 在后续创建质押账户的操作中您将随时需要用到它。
创建一个质押账户:
```bash
solana create-stake-account --from <KEYPAIR> stake-account.json <AMOUNT> \
--stake-authority <KEYPAIR> --withdraw-authority <KEYPAIR> \
--fee-payer <KEYPAIR>
```
`<AMOUNT>` 的代币从 `<KEYPAIR>` 转到了 stake-account.json 公钥的一个新质押账户。
现在可以丢弃 stake-account.json 文件了。 要授权额外的操作,您可以通过 `--stake-authority``--rap-authority` 密钥对,而无需使用 stak-account.json。
使用 `solana stake-account` 命令查看新的质押账户:
```bash
solana stake-account <STAKE_ACCOUNT_ADDRESS>
```
结果大概呈这样:
```text
Total Stake: 5000 SOL
Stake account is undelegated
Stake Authority: EXU95vqs93yPeCeAU7mPPu6HbRUmTFPEiGug9oCdvQ5F
Withdraw Authority: EXU95vqs93yPeCeAU7mPPu6HbRUmTFPEiGug9oCdvQ5F
```
### 设置质押和取款权限
创建账号时,如果需要设置 [质押和提现权限](../staking/stake-accounts.md#understanding-account-authorities),您可以通过 `--stake-authority` and `--withdraw-authority` 选项或 `solana stake-authorize` 命令来实现。 例如,要设置一个新的质押权限,请运行:
```bash
solana stake-authorize <STAKE_ACCOUNT_ADDRESS> \
--stake-authority <KEYPAIR> --new-stake-authority <PUBKEY> \
--fee-payer <KEYPAIR>
```
这将针对已有的质押账号 `<STAKE_ACCOUNT_ADDRESS>`,通过现有的质押权限 `<KEYPAIR>` 来授权一个新的质押权限 `<PUBKEY>`
### 高级功能:派生质押账户地址
当委托质押时,你需要将所有密钥账户中的代币委托给某一个验证节点。 而要委托给多个验证节点,您就需要多个质押账户。 为每个帐户创建一个新密钥对并管理那些地址可能比较繁琐。 好在您可以通过 `--seed` 选项来派生多个质押地址:
```bash
solana create-stake-account --from <KEYPAIR> <STAKE_ACCOUNT_KEYPAIR> --seed <STRING> <AMOUNT> \
--stake-authority <PUBKEY> --withdraw-authority <PUBKEY> --fee-payer <KEYPAIR>
```
`<STRING>` 是一个最多32字节的任意字符串通常情况下是一个对应该派生账户的数字。 第一个账户是"0",第二个是 "1",以此类推。 `<STAKE_ACCOUNT_KEYPAIR>` 公钥发挥基本地址的作用。 该命令将从基础地址和种子字符串中派生一个新地址。 要查看派生出哪个质押地址,请使用 `solana create-address-with-seed`命令:
```bash
solana create-address-with-seed --from <PUBKEY> <SEED_STRING> STAKE
```
`<PUBKEY>` is the public key of the `<STAKE_ACCOUNT_KEYPAIR>` passed to `solana create-stake-account`.
该命令将输出派生地址,可以用于质押操作中的 `<STAKE_ACCOUNT_ADDRESS>` 参数。
## 委托您的质押
想要委托您的质押给某个验证节点,您首先需要它的投票帐号地址。 您可以通过 `solana validators` 命令来查询所有验证节点列表和他们的投票账户:
```bash
solana 验证节点
```
每行的第一列包含验证节点的身份,第二列是投票帐户地址。 选择一个验证节点,并在 `solana delegate-stake` 中使用它的投票帐户地址:
```bash
solana delegate-stake --stake-authority <KEYPAIR> <STAKE_ACCOUNT_ADDRESS> <VOTE_ACCOUNT_ADDRESS> \
--fee-payer <KEYPAIR>
```
质押权限 `<KEYPAIR>` 对地址 `<STAKE_ACCOUNT_ADDRESS>` 进行帐户授权操作。 该质押被委托给投票账户地址 `<VOTE_ACCOUNT_ADDRESS>`
委托质押后,使用 `solana stake-account` 查看质押账户的变化:
```bash
solana stake-account <STAKE_ACCOUNT_ADDRESS>
```
您将在输出中看到“Delegated Stake”和“Delegated Vote Account Address”两个新字段。 结果大概呈这样:
```text
Total Stake: 5000 SOL
Credits Observed: 147462
Delegated Stake: 4999.99771712 SOL
Delegated Vote Account Address: CcaHc2L43ZWjwCHART3oZoJvHLAe9hzT2DJNUpBzoTN1
Stake activates starting from epoch: 42
Stake Authority: EXU95vqs93yPeCeAU7mPPu6HbRUmTFPEiGug9oCdvQ5F
Withdraw Authority: EXU95vqs93yPeCeAU7mPPu6HbRUmTFPEiGug9oCdvQ5F
```
## 取消质押
质押委托以后,您可以使用 `solana deactivate-stake` 命令来取消委托的质押:
```bash
solana deactivate-stake --stake-authority <KEYPAIR> <STAKE_ACCOUNT_ADDRESS> \
--fee-payer <KEYPAIR>
```
质押权限 `<KEYPAIR>` 对地址 `<STAKE_ACCOUNT_ADDRESS>` 进行帐户授权操作。
请注意,质押需要几个 epoch 才能“冷却cool down”。 在冷却期间进行重新质押的操作将会失败。
## 提现质押
使用 `solana withdraw-stake` 命令将代币转移出质押帐户:
```bash
solana withdraw-stake --withdraw-authority <KEYPAIR> <STAKE_ACCOUNT_ADDRESS> <RECIPIENT_ADDRESS> <AMOUNT> \
--fee-payer <KEYPAIR>
```
其中,`<STAKE_ACCOUNT_ADDRESS>` 是现有的质押帐户,质押权限 `<KEYPAIR>` 是提现权限, 而 `<AMOUNT>` 是要转账给接收账户 `<RECIPIENT_ADDRESS>` 的代币数量。
## 拆分质押
在现有质押不能取款的时候,您可能想将质押分配给另外的验证节点。 无法取回的原因可能是处于质押、冷却或锁定的状态。 若要将代币从现有质押账户转移到一个新的帐户,请使用 `solana split-stake` 命令:
```bash
solana split-stake --stake-authority <KEYPAIR> <STAKE_ACCOUNT_ADDRESS> <NEW_STAKE_ACCOUNT_KEYPAIR> <AMOUNT> \
--fee-payer <KEYPAIR>
```
其中,`<STAKE_ACCOUNT_ADDRESS>` 是现有的质押帐户,质押权限 `<KEYPAIR>` 是质押账户的权限, `<NEW_STAKE_ACCOUNT_KEYPAIR>` 是新账户的密钥对,`<AMOUNT>` 是要转账给新账户的代币数量。
若要将质押账户拆分到派生账户地址,请使用 `--seed` 选项。 详情请参阅 [衍生质押账户地址](#advanced-derive-stake-account-addresses)。