错误:自定义:solana 程序部署时无效的 blockhash

Sve*_*ith 7 blockchain solana

尝试将程序部署到 solana devnet。

我正在使用 solana program deploy ./path/xxxx.so -u devnet

我得到了多行

msg 21AbKBwMcsDR4DciR6Z69X6vrqVj7uHKg2Wf1ap8FB1J
msg 21AbKBwMcsDR4DciR6Z69X6vrqVj7uHKg2Wf1ap8FB1J
msg 21AbKBwMcsDR4DciR6Z69X6vrqVj7uHKg2Wf1ap8FB1J
msg 21AbKBwMcsDR4DciR6Z69X6vrqVj7uHKg2Wf1ap8FB1J
msg 21AbKBwMcsDR4DciR6Z69X6vrqVj7uHKg2Wf1ap8FB1J
Run Code Online (Sandbox Code Playgroud)

最后给了我这个错误

Error: Custom: Invalid blockhash
Run Code Online (Sandbox Code Playgroud)

尝试在网上搜索但没有得到任何有用的信息

Lor*_*pil 6

我能够通过恢复到早期版本的 solana-cli 和anchor-cli 来解决此错误

solana-cli 1.8.0 (src:4a8ff62a; feat:1813598585)
anchor-cli 0.18.2
rustc 1.57.0 (f1edd0429 2021-11-29)
Run Code Online (Sandbox Code Playgroud)

我也在这个相关的github问题中分享了上述解决方案

我的一个猜测是ExitStatus(unix_wait_status(256))(在我的错误日志中)可能是由于部署验证速度较慢而等待太久而导致的“超时错误”。

我确实注意到使用更高版本(solana-cli 1.9.1、anchor-cli 0.20.1)的部署明显变慢,特别是对于较大的程序(我的小程序部署仍然工作正常)。这些版本显示了与 OP 类似的“msg”日志记录。

更新:

如今,我最简单的解决方案是在部署之前运行下面的代码片段

sh -c "$(curl -sSfL https://release.solana.com/v1.8.13/install)"
Run Code Online (Sandbox Code Playgroud)


Jon*_*n C 0

这非常奇怪,而不是部署程序时应该得到的正常输出。您是否尝试过更新到最新的 Solana SDK(撰写本文时为 1.9.2)?更多文档请访问https://docs.solana.com/cli/install-solana-cli-tools#use-solanas-install-tool

我刚刚在 devnet 上尝试过,并得到以下输出:

$ solana program deploy path/to/program.so -u devnet
Finding leader nodes...
[x/y] Transactions sent...
[x/y] Transactions confirmed. Retrying in z blocks.
Program Id: 6sxk3XpYapcRnpSwRKFS1nGK9MJpm8Jkb9aofnBcG1p8
Run Code Online (Sandbox Code Playgroud)