`solana deploy` 和 `solana program deploy` 的区别
Difference bewteen `solana deploy` and `solana program deploy`
我目前正在学习使用 Rust 进行 Solana 开发。我遵循了 hello-world 教程,想知道 运行 solana deploy
和 solana program deploy
.
之间有什么区别
我都使用 Solana Devnet 集群进行了测试。
Result of running solana deploy
.
Result of running solana program deploy
.
我的直觉告诉我 solana deploy
正在创建一个简单的 Solana 帐户,而另一个正在创建一个程序帐户。如果无法在其上调用交易,那么使用程序创建一个简单的 Solana 账户有什么意义?
我不确定确切的区别是什么,但我可以说 solana deploy
不会创建一个简单的 Solana 帐户。
因为你可以看到solana deploy
部署的你账户的executable
字段是Yes
,Assigned Program Id
字段是BPF Loader 2
。
BPF Loader
可以看作是其他编程语言的编译器,非程序账号的账号没有BPF Loader
赋值。
我也会调查具体的区别。
它们都用于部署程序,但 solana program deploy
通常是推荐的路线。
solana deploy
是旧形式,使用 BPF Loader 2 来部署程序。以这种方式部署的程序永远是不可变的。 SPL 令牌程序使用此加载器:https://explorer.solana.com/address/TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
solana program deploy
是较新的形式,并使用 Upgradeable BPF Loader 来部署程序。如果设置了升级权限,使用此加载程序的程序可以选择升级。否则,如果使用 --final
标志部署,它们也可以是不可变的,与旧的 solana deploy
相同。 SPL 权益池程序使用此加载器:https://explorer.solana.com/address/SPoo1Ku8WFXoNDMHPsrGSTSG1Y47rzgn41SLUNakuHy
solana deploy
使用旧的 BPF 加载器,即 BPFLoader2111111111111111111111111111111111
。它不允许更新已部署的程序。只要程序地址不同(提供或随机生成),它就允许同一程序的多次部署。
只要未提供 --final
标志,solana program deploy
允许将同一(或其他程序)多次部署到同一地址。它使用 BPFLoaderUpgradeab1e11111111111111111111111 加载程序。
此外,solana deploy
使用程序 ID 标识的帐户存储程序二进制文件,而 solana program deploy
使用单独的帐户存储程序的二进制内容。
在 solana program deploy
的情况下,程序帐户和程序数据帐户都属于 BPF 加载程序 (BPFLoaderUpgradeab1e11111111111111111111111)。
我目前正在学习使用 Rust 进行 Solana 开发。我遵循了 hello-world 教程,想知道 运行 solana deploy
和 solana program deploy
.
我都使用 Solana Devnet 集群进行了测试。
Result of running solana deploy
.
Result of running solana program deploy
.
我的直觉告诉我 solana deploy
正在创建一个简单的 Solana 帐户,而另一个正在创建一个程序帐户。如果无法在其上调用交易,那么使用程序创建一个简单的 Solana 账户有什么意义?
我不确定确切的区别是什么,但我可以说 solana deploy
不会创建一个简单的 Solana 帐户。
因为你可以看到solana deploy
部署的你账户的executable
字段是Yes
,Assigned Program Id
字段是BPF Loader 2
。
BPF Loader
可以看作是其他编程语言的编译器,非程序账号的账号没有BPF Loader
赋值。
我也会调查具体的区别。
它们都用于部署程序,但 solana program deploy
通常是推荐的路线。
solana deploy
是旧形式,使用 BPF Loader 2 来部署程序。以这种方式部署的程序永远是不可变的。 SPL 令牌程序使用此加载器:https://explorer.solana.com/address/TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
solana program deploy
是较新的形式,并使用 Upgradeable BPF Loader 来部署程序。如果设置了升级权限,使用此加载程序的程序可以选择升级。否则,如果使用 --final
标志部署,它们也可以是不可变的,与旧的 solana deploy
相同。 SPL 权益池程序使用此加载器:https://explorer.solana.com/address/SPoo1Ku8WFXoNDMHPsrGSTSG1Y47rzgn41SLUNakuHy
solana deploy
使用旧的 BPF 加载器,即 BPFLoader2111111111111111111111111111111111
。它不允许更新已部署的程序。只要程序地址不同(提供或随机生成),它就允许同一程序的多次部署。
--final
标志,solana program deploy
允许将同一(或其他程序)多次部署到同一地址。它使用 BPFLoaderUpgradeab1e11111111111111111111111 加载程序。
此外,solana deploy
使用程序 ID 标识的帐户存储程序二进制文件,而 solana program deploy
使用单独的帐户存储程序的二进制内容。
在 solana program deploy
的情况下,程序帐户和程序数据帐户都属于 BPF 加载程序 (BPFLoaderUpgradeab1e11111111111111111111111)。