部署程序至solana-test-validator时出现交易过期问题
Solana本地验证器v1.11.5部署程序失败:账户分配无法确认交易(余额充足)
问题详情
- 使用Solana CLI v1.11.15可正常将程序部署至Testnet,但使用v1.11.5版本的
solana-test-validator进行本地部署时失败 - 执行部署命令:
solana --url localhost --commitment confirmed program deploy target/deploy/program.so
返回错误:
Error: Account allocation failed: unable to confirm transaction.
This can happen in situations such as transaction expiration and insufficient
fee-payer funds
- 已确认账户余额充足,查询命令及结果:
solana --url localhost balance
500000000 SOL
解决方案
1. 统一CLI与本地验证器版本
v1.11.5版本的solana-test-validator和v1.11.15的CLI存在版本兼容性差异,导致交易确认逻辑不匹配。将本地验证器升级至与CLI相同的v1.11.15版本:
solana-install update 1.11.15
升级完成后重启验证器,再重新执行部署命令。
2. 调整commitment参数或检查验证器状态
- 尝试修改部署时的commitment参数,改用
finalized或processed:
solana --url localhost --commitment finalized program deploy target/deploy/program.so
旧版本验证器对commitment的处理逻辑可能与新版本CLI不一致,调整参数可规避该问题。
- 查看验证器运行日志,确认无异常报错:
solana-test-validator --log
3. 重置本地验证器状态
本地验证器可能存在异常状态,重置后再尝试部署:
solana-test-validator --reset
重置完成后重新启动验证器,再执行部署操作。
4. 确保程序文件与验证器版本兼容
使用v1.11.5版本的CLI重新编译程序,生成适配旧版本验证器的program.so文件,再用同版本验证器部署,避免跨版本编译带来的兼容性问题。
内容的提问来源于stack exchange,提问作者kemga
相关产品推荐
相关产品推荐

