You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Anchor部署程序到Solana devnet失败报错问题求助

Anchor 部署到 Devnet 出现 Blockhash 过期、部署失败问题排查与解决

错误本质

部署交易使用的最近区块哈希在交易被链上打包前就已过期,核心原因是交易传输/排队耗时超过区块哈希有效期(通常为150个插槽,约2分钟)。

排查步骤

  • 验证网络连接质量:运行 solana ping -u devnet -c 10,若平均延迟高于500ms、丢包率超过10%,说明本地到公共Devnet RPC的连接不稳定。
  • 检查部署钱包余额:运行 solana balance -u devnet,部署1MB大小的程序至少需要预留2~3SOL的部署费用,余额不足会导致交易无法被打包。
  • 核对程序体积:运行 ls -lh target/deploy/*.so 查看编译后的程序二进制大小,Solana单程序部署上限为10MB,体积过大会导致上传耗时过久。
  • 确认Anchor配置:检查Anchor.toml中[provider]段的cluster配置是否为Devnet,避免误连其他集群。

解决方案

  • 替换稳定RPC端点:不要使用官方公共Devnet RPC,峰值时期拥堵率极高,更换为低延迟的私有Devnet RPC后重新部署,部署时可临时指定RPC:
    anchor deploy --provider.cluster <你的稳定Devnet RPC地址>
    
  • 调高交易优先级费用:在Anchor.toml中添加优先级费用配置,提高交易打包优先级:
    [provider]
    priority_fee = 100000 # 可根据拥堵情况上调,单位是lamport
    
    也可部署时临时指定:
    anchor deploy -- --priority-fee 100000
    
  • 分阶段部署大程序:如果程序体积超过3MB,先上传部署缓冲账户,再执行部署生效,避免单次传输超时:
    # 第一步:创建缓冲账户并上传程序
    solana program write-buffer target/deploy/<你的程序名>.so -u devnet
    # 第二步:使用已上传的缓冲账户完成部署
    solana program deploy --buffer <上一步输出的缓冲账户地址> -u devnet
    
  • 跳过非必要校验步骤:已经提前完成anchor build校验的前提下,部署时跳过 lint 和重复编译步骤,减少耗时:
    anchor deploy --skip-lint --skip-build
    
  • 错峰部署:Devnet拥堵时段(通常为工作日欧美白班时段)部署成功率极低,可换非高峰时段重试,或先切换到Testnet验证部署流程无问题后再尝试Devnet部署。

内容的提问来源于stack exchange,提问作者Detech

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 23:06:05