收到 SOL后,您可以考虑通过将质押委托给验证者来使用它。质押就是我们所说的 质押账户中的代币。Solana 根据委托给他们的质押量来衡量验证者投票,这让这些验证者在确定区块链中的下一个有效交易块时拥有更大的影响力。然后,Solana 会定期生成新的 SOL 来奖励质押者和验证者。您委托的质押越多,您获得的奖励就越多。
创建权益账户

要委托质押,您需要将一些代币转入质押账户。要创建账户,您需要一个密钥对。其公钥将用作 质押账户地址。这里不需要密码或加密;创建质押账户后,此密钥对将被丢弃。

solana-keygen new --no-passphrase -o stake-account.json
输出将在文本后包含公钥pubkey:
。

pubkey: GKvqsuNcnwWqPzzuhLmGi4rzzh55FhJtGizkhHaEJqiV
复制公钥并将其保存以备不时之需。当您下次想要对质押账户执行操作时,您将需要它。
现在,创建一个质押账户:

solana create-stake-account --from <KEYPAIR> stake-account.json <AMOUNT> \ --stake-authority <KEYPAIR> --withdraw-authority <KEYPAIR> \ --fee-payer <KEYPAIR>
<AMOUNT>
代币从“from”处的账户转移<KEYPAIR>
到stake-account.json公钥处的新权益账户。
现在可以丢弃 stake-account.json 文件。要授权其他操作,您将使用--stake-authority
或--withdraw-authority
密钥对,而不是 stake-account.json。
使用以下命令查看新的质押账户solana stake-account
:

solana stake-account <STAKE_ACCOUNT_ADDRESS>
输出将类似于此:

Total Stake: 5000 SOL
Stake account is undelegated
Stake Authority: EXU95vqs93yPeCeAU7mPPu6HbRUmTFPEiGug9oCdvQ5F
Withdraw Authority: EXU95vqs93yPeCeAU7mPPu6HbRUmTFPEiGug9oCdvQ5F
设定权益和撤销权限
质押和提现权限 可以在创建账户时通过--stake-authority
和 --withdraw-authority
选项设置,也可以在创建账户后通过solana stake-authorize
命令设置。例如,要设置新的质押权限,请运行:

solana stake-authorize <STAKE_ACCOUNT_ADDRESS> \ --stake-authority <KEYPAIR> --new-stake-authority <PUBKEY> \ --fee-payer <KEYPAIR>
这将使用现有的质押权限来授权质押账户上的<KEYPAIR>
新质押权限。<PUBKEY>
<STAKE_ACCOUNT_ADDRESS>
高级:获取质押账户地址
当您委托质押时,您会将质押账户中的所有代币委托给单个验证者。要委托给多个验证者,您将需要多个质押账户。为每个账户创建新的密钥对并管理这些地址可能很麻烦。幸运的是,您可以使用以下--seed
选项派生质押地址:

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
:

solana create-address-with-seed --from <PUBKEY> <SEED_STRING> STAKE
<PUBKEY>
<STAKE_ACCOUNT_KEYPAIR>
是传递给 的公钥solana create-stake-account
。
<STAKE_ACCOUNT_ADDRESS>
该命令将输出一个派生地址,该地址可以作为权益操作中的参数使用 。
代表权益
要将您的质押委托给验证者,您需要其投票账户地址。使用以下命令查询集群中所有验证者及其投票账户的列表来找到它solana validators
:

solana validators
每行的第一列包含验证者的身份,第二列是投票账户地址。选择一个验证者并在以下操作中使用其投票账户地址 solana delegate-stake
:

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
观察质押账户的变化:

solana stake-account <STAKE_ACCOUNT_ADDRESS>
您将在输出中看到新字段“委托权益”和“委托投票账户地址”。输出将类似于以下内容:

pubkey: GKvqsuNcnwWqPzzuhLmGi4rzzh55FhJtGizkhHaEJqiV
1
取消权益
一旦委托完毕,您可以使用以下命令取消委托solana deactivate-stake
:

pubkey: GKvqsuNcnwWqPzzuhLmGi4rzzh55FhJtGizkhHaEJqiV
2
权益权限<KEYPAIR>
授权对地址为 的账户进行操作<STAKE_ACCOUNT_ADDRESS>
。
请注意,质押需要几个时期才能“冷却”。在冷却期内委托质押的尝试将会失败。
提取权益
使用以下命令将代币从权益账户中转出solana withdraw-stake
:

pubkey: GKvqsuNcnwWqPzzuhLmGi4rzzh55FhJtGizkhHaEJqiV
3
<STAKE_ACCOUNT_ADDRESS>
是现有的质押账户,质押权限 <KEYPAIR>
是提现权限,<AMOUNT>
是需要转账的代币数量<RECIPIENT_ADDRESS>
。
分割股权
您可能希望将现有质押委托给其他验证者,而现有质押不符合提取条件。它可能不符合提取条件,因为它当前处于质押、冷却或锁定状态。要将代币从现有质押账户转移到新账户,请使用以下solana split-stake
命令:

pubkey: GKvqsuNcnwWqPzzuhLmGi4rzzh55FhJtGizkhHaEJqiV
4
<STAKE_ACCOUNT_ADDRESS>
是现有的质押账户,质押权限 <KEYPAIR>
是质押权限,<NEW_STAKE_ACCOUNT_KEYPAIR>
是新账户的密钥对,<AMOUNT>
是转移到新账户的代币数量。
要将质押账户拆分为派生账户地址,请使用该--seed
选项。