我怎样才能在 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 中获取信息,但未能成功。
有两种方法可以做到这一点,具体取决于您要查找的内容:
- 您可以查看所有涉及程序地址的过去交易签名,每个签名使用https://docs.solana.com/developing/clients/jsonrpc-api#getsignaturesforaddress followed by https://docs.solana.com/developing/clients/jsonrpc-api#gettransaction。 BPF Upgradeable Loader (
BPFLoaderUpgradeab1e11111111111111111111111
) 或 BPF Loader 2 (BPFLoader2111111111111111111111111111111111
) 程序的任何指令都可能由程序作者签名。
- 如果该程序与可升级加载器(
BPFLoaderUpgradeab1e11111111111111111111111
)相关联,则可能存在可以升级该程序的“升级权限”。这可以很好地代表程序的“作者”。如果你在资源管理器中查看权益池程序,你会看到 4SnSuUtJGKvk2GYpBwmEsWG53zTurVM8yXGsoiZQyMJn
是升级权限:https://explorer.solana.com/address/SPoo1Ku8WFXoNDMHPsrGSTSG1Y47rzgn41SLUNakuHy
将所有者的私人信息硬编码到程序中是不安全的,所以我们应该使用其他方法来验证帐户是否是所有者。
我们可以使用 SPL 令牌来表示程序的所有权。
- 铸造一个 SPL 代币,只有 1 个供应。
- 将该铸币厂的公钥硬编码到程序中。
- 部署您的程序。
当然,您应该检查该帐户是否具有硬编码的 mint 令牌余额,以检查该帐户是否是该程序的所有者。
您可以通过转移 spl 令牌来转移所有权。
也可以沿着 SPL 令牌的功能扩展功能。
我很好奇是否有任何方法可以获取 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 中获取信息,但未能成功。
有两种方法可以做到这一点,具体取决于您要查找的内容:
- 您可以查看所有涉及程序地址的过去交易签名,每个签名使用https://docs.solana.com/developing/clients/jsonrpc-api#getsignaturesforaddress followed by https://docs.solana.com/developing/clients/jsonrpc-api#gettransaction。 BPF Upgradeable Loader (
BPFLoaderUpgradeab1e11111111111111111111111
) 或 BPF Loader 2 (BPFLoader2111111111111111111111111111111111
) 程序的任何指令都可能由程序作者签名。 - 如果该程序与可升级加载器(
BPFLoaderUpgradeab1e11111111111111111111111
)相关联,则可能存在可以升级该程序的“升级权限”。这可以很好地代表程序的“作者”。如果你在资源管理器中查看权益池程序,你会看到4SnSuUtJGKvk2GYpBwmEsWG53zTurVM8yXGsoiZQyMJn
是升级权限:https://explorer.solana.com/address/SPoo1Ku8WFXoNDMHPsrGSTSG1Y47rzgn41SLUNakuHy
将所有者的私人信息硬编码到程序中是不安全的,所以我们应该使用其他方法来验证帐户是否是所有者。 我们可以使用 SPL 令牌来表示程序的所有权。
- 铸造一个 SPL 代币,只有 1 个供应。
- 将该铸币厂的公钥硬编码到程序中。
- 部署您的程序。
当然,您应该检查该帐户是否具有硬编码的 mint 令牌余额,以检查该帐户是否是该程序的所有者。 您可以通过转移 spl 令牌来转移所有权。 也可以沿着 SPL 令牌的功能扩展功能。