百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
返回工具页/返回 Issues 列表
#34738·solana

从持仓账户中提取所有未押金的 SOL 的方法

作者: bartenbach创建于 2024年1月11日更新于 2025年1月5日
标签good first issuecommunity

问题

Jito 的 MEV 奖励被空投到持仓账户中作为多余的、未持仓的 SOL。收到这些空投的持仓账户会看到类似以下内容:

% solana stake-account 74JwpCE61kJMdxaf9j2X5EpnkS1CiCoqoEoJPx5MBdCe
Balance: 97.256865087 SOL
Rent Exempt Reserve: 0.00228288 SOL
Delegated Stake: 96.742412791 SOL
Active Stake: 96.742412791 SOL

请注意持仓账户 Balance 和 Active Stake 之间的差异。看起来您可以使用现有函数提取多余的 SOL,但这似乎不起作用,因为 ALL 关键字意味着账户的全部余额:

% solana withdraw-stake --help
solana-withdraw-stake
从持仓账户中提取未持仓的 SOL
    <AMOUNT>                   要从持仓账户中提取的金额,以 SOL 为单位;接受 ALL 关键字
% solana withdraw-stake 74JwpCE61kJMdxaf9j2X5EpnkS1CiCoqoEoJPx5MBdCe HKCgzSzVT92ZUDLj6hTeJnRgY6objrPDAbVr3xyxR6kY ALL
Error: RPC response error -32002: Transaction simulation failed: Error processing Instruction 0: insufficient funds for instruction [2 log messages]

(客户端密钥对已被资助,指定 --fee-payer 没有任何效果)

% solana balance HKCgzSzVT92ZUDLj6hTeJnRgY6objrPDAbVr3xyxR6kY.json
102.301790691 SOL
% solana withdraw-stake --fee-payer HKCgzSzVT92ZUDLj6hTeJnRgY6objrPDAbVr3xyxR6kY.json stake-account.json $(solana address) ALL
Error: RPC response error -32002: Transaction simulation failed: Error processing Instruction 0: insufficient funds for instruction [2 log messages]

建议的解决方案

添加新的关键字,如 AVAILABLE、EXCESS 或 UNSTAKED,以计算持仓账户 Balance 和 Active Stake 之间的差异。这样就可以非常方便地从持仓账户中提取所有未持仓的 SOL。在 Jito 之前,这并不是必要的,但随着 MEV 被空投,以及持仓账户中多余的 SOL,这将是非常有用的。

内容来源: solana-labs/solana

查看 GitHub 原文在 GitHub 查看讨论