【发布时间】:2021-11-12 20:39:02
【问题描述】:
我目前正在学习使用 Rust 进行 Solana 开发。
我试图了解为什么我们有一个程序帐户和一个程序可执行数据帐户。我已经知道 Program Account 包含对 Program Executable Data Account 的引用,而后者包含实际代码。
我的问题是为什么我们必须将程序帐户中的实际代码拆分到一个单独的帐户中?我最初的想法是:
- 也许这与能够升级您的程序代码有关。也许当您升级程序时,会创建一个新的可执行数据帐户并更新程序帐户中的引用。
情况并非如此,因为在升级程序后,可执行数据帐户的引用(地址)是相同的。
- 可能这与帐户所有权有关。也许一个帐户归开发者所有,另一个帐户归 BPF 计划所有。
事实并非如此,因为这两个帐户都归 BPF 计划所有,而开发者只是升级机构
为什么一个程序需要 2 个帐户?为什么不将实际代码存储在程序帐户的数据槽中?
我希望这是有道理的。
【问题讨论】:
标签: solana