我怎样才能在 solana 上找到程序作者?

How can I get program author on solana?

我很好奇是否有任何方法可以获取 solana 智能合约的作者。 在 solidity 的情况下,我在构造函数中使用了 save msg.sender 来保存合约的所有者地址。

contract KeepOwner {
    address private _owner;
    constructor() {
        _owner = msg.sender;
    }

    function isOwner(address likeOwner) public view returns (bool) {
        return likeOwner == _owner;
    }
}

但我在 solana 上找不到任何方法来保存和获取作者(已发送部署交易)公钥。 我试图从 solana 程序的 AccountInfo 中获取信息,但未能成功。

有两种方法可以做到这一点,具体取决于您要查找的内容:

将所有者的私人信息硬编码到程序中是不安全的,所以我们应该使用其他方法来验证帐户是否是所有者。 我们可以使用 SPL 令牌来表示程序的所有权。

  • 铸造一个 SPL 代币,只有 1 个供应。
  • 将该铸币厂的公钥硬编码到程序中。
  • 部署您的程序。

当然,您应该检查该帐户是否具有硬编码的 mint 令牌余额,以检查该帐户是否是该程序的所有者。 您可以通过转移 spl 令牌来转移所有权。 也可以沿着 SPL 令牌的功能扩展功能。