在Solidity智能合约中,判断调用者是否为合约创建者(部署者)有几种常见方法: 方法1:在构造函数中存储创建者地址solidity
address public owner;constructor() { owner = msg.sender; // 在部署时将创建者地址存储到owner变量}function isOwner() public view returns (bool) { return msg.sender == owner;}
方法2:使用修饰器solidity
address public owner;constructor() { owner = msg.sender;}modifier onlyOwner() { require(msg.sender == owner, "Caller is not the owner"); _;}function restrictedFunction() public onlyOwner { // 只有创建者可以调用此函数}
方法3:直接比较msg.sendersolidity
function checkIfCreator() public view returns (bool) { return msg.sender == owner;}
注意事项solidity
function transferOwnership(address newOwner) public onlyOwner { require(newOwner != address(0), "Invalid address"); owner = newOwner;}
这些方法都能有效判断调用者是否为合约创建者,最常用的是第一种方法,即在构造函数中存储创建者地址。
|