我目前正在学习使用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帐户,而另一个是创建一个Program帐户。如果不能调用一个事务,那么使用程序创建一个简单的Solana帐户有什么意义?
发布于 2021-11-11 20:52:15
它们都用于部署程序,但solana program deploy通常是推荐的路线。
solana deploy是较旧的形式,它使用BPF Loader2来部署程序。以这种方式部署的程序是永远不变的。SPL令牌程序使用这个加载器:https://explorer.solana.com/address/TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
solana program deploy是较新的表单,它使用可升级的BPF Loader来部署程序。如果设置了升级权限,则使用此加载器的程序可以选择升级。否则,如果使用--final标志部署,它们也可以是不可变的,就像旧的solana deploy一样。SPL Stake程序使用这个加载器:https://explorer.solana.com/address/SPoo1Ku8WFXoNDMHPsrGSTSG1Y47rzgn41SLUNakuHy
发布于 2021-11-08 21:17:55
我不确定确切的区别是什么,但我可以说solana deploy不会创建一个简单的Solana帐户。因为您可以看到solana deploy部署的帐户的executable字段为Yes,Assigned Program Id字段为BPF Loader 2。BPF Loader可以被认为是其他编程语言的编译器,不是程序帐户的帐户没有BPF Loader赋值。我也会调查一下确切的区别。
https://stackoverflow.com/questions/69884904
复制相似问题