【问题标题】:Difference bewteen `solana deploy` and `solana program deploy``solana deploy` 和 `solana program deploy` 之间的区别
【发布时间】:2021-12-21 09:03:38
【问题描述】:

我目前正在学习使用 rust 进行 Solana 开发。我按照 hello-world 教程进行操作,想知道运行 solana deploysolana program deploy 之间有什么区别。

我都使用 Solana Devnet 集群进行了测试。

Result of running solana deploy.

Result of running solana program deploy.

我的直觉告诉我solana deploy 正在创建一个简单的 Solana 帐户,而另一个正在创建一个程序帐户。如果无法调用交易,那么使用程序创建一个简单的 Solana 帐户有什么意义?

【问题讨论】:

    标签: solana


    【解决方案1】:

    他们都致力于部署程序,但solana program deploy 通常是推荐的路线。

    solana deploy 是较旧的形式,使用 BPF Loader 2 来部署程序。以这种方式部署的程序永远是不可变的。 SPL Token 程序使用这个加载器:https://explorer.solana.com/address/TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA

    solana program deploy 是较新的形式,使用 Upgradeable BPF Loader 来部署程序。如果设置了升级权限,则使用此加载程序的程序可以选择升级。否则,如果使用--final 标志部署它们也可以是不可变的,与旧的solana deploy 相同。 SPL 权益池程序使用这个加载器:https://explorer.solana.com/address/SPoo1Ku8WFXoNDMHPsrGSTSG1Y47rzgn41SLUNakuHy

    【讨论】:

    • 谢谢,有道理!对于客户端用户,这两种方法是否相同?也就是说,一个 Js API 客户端程序可以与两个程序以相同的方式交互吗?
    • 是的,如果您向程序发送交易,它们从外部看起来完全一样。
    【解决方案2】:

    我不确定确切的区别是什么,但我可以说solana deploy 不会创建一个简单的 Solana 帐户。 因为你可以看到solana deploy部署的账户的executable字段是YesAssigned Program Id字段是BPF Loader 2BPF Loader 可以认为是其他编程语言的编译器,非程序账户的账户没有BPF Loader 赋值。 我也会调查确切的差异。

    【讨论】:

    • 谢谢!我也会继续我的调查。任何更新我都会在这里发布
    猜你喜欢
    • 1970-01-01
    • 2011-11-18
    • 2012-07-25
    • 2019-02-09
    • 2022-06-29
    • 2017-02-13
    • 2022-12-28
    • 1970-01-01
    • 2020-10-14
    相关资源
    最近更新 更多