Description:
Proxy contract enabling upgradeable smart contract patterns. Delegates calls to an implementation contract.
Blockchain: Ethereum
Source Code: View Code On The Blockchain
Solidity Source Code:
{{
"language": "Vyper",
"sources": {
"contract.vy": {
"content": "# pragma version 0.4.3\r
\r
@deploy\r
def __init__():\r
pass\r
\r
@internal\r
def _isGovernanceAdmin(target_contract: address, user: address) -> bool:\r
return_data: (bool, Bytes[32]) = raw_call(\r
target_contract,\r
concat(\r
method_id("isGovernanceAdmin(address)"),\r
convert(user, bytes32)\r
),\r
max_outsize=32,\r
revert_on_failure=False\r
)\r
if return_data[0]:\r
return return_data[1] == b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01'\r
return False\r
\r
@internal\r
def _isAppRoleAdmin(target_contract: address, user: address) -> bool:\r
return_data: (bool, Bytes[32]) = raw_call(\r
target_contract,\r
concat(\r
method_id("isAppRoleAdmin(address)"),\r
convert(user, bytes32)\r
),\r
max_outsize=32,\r
revert_on_failure=False\r
)\r
if return_data[0]:\r
return return_data[1] == b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01'\r
return False\r
\r
@internal\r
def _isAppGovernor(target_contract: address, user: address) -> bool:\r
return_data: (bool, Bytes[32]) = raw_call(\r
target_contract,\r
concat(\r
method_id("isAppGovernor(address)"),\r
convert(user, bytes32)\r
),\r
max_outsize=32,\r
revert_on_failure=False\r
)\r
if return_data[0]:\r
return return_data[1] == b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01'\r
return False\r
\r
@internal\r
def _isOperator(target_contract: address, user: address) -> bool:\r
return_data: (bool, Bytes[32]) = raw_call(\r
target_contract,\r
concat(\r
method_id("isOperator(address)"),\r
convert(user, bytes32)\r
),\r
max_outsize=32,\r
revert_on_failure=False\r
)\r
if return_data[0]:\r
return return_data[1] == b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01'\r
return False\r
\r
@internal\r
def _isSecurityAdmin(target_contract: address, user: address) -> bool:\r
return_data: (bool, Bytes[32]) = raw_call(\r
target_contract,\r
concat(\r
method_id("isSecurityAdmin(address)"),\r
convert(user, bytes32)\r
),\r
max_outsize=32,\r
revert_on_failure=False\r
)\r
if return_data[0]:\r
return return_data[1] == b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01'\r
return False\r
\r
@internal\r
def _isSecurityAgent(target_contract: address, user: address) -> bool:\r
return_data: (bool, Bytes[32]) = raw_call(\r
target_contract,\r
concat(\r
method_id("isSecurityAgent(address)"),\r
convert(user, bytes32)\r
),\r
max_outsize=32,\r
revert_on_failure=False\r
)\r
if return_data[0]:\r
return return_data[1] == b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01'\r
return False\r
\r
@internal\r
def _isTokenAdmin(target_contract: address, user: address) -> bool:\r
return_data: (bool, Bytes[32]) = raw_call(\r
target_contract,\r
concat(\r
method_id("isTokenAdmin(address)"),\r
convert(user, bytes32)\r
),\r
max_outsize=32,\r
revert_on_failure=False\r
)\r
if return_data[0]:\r
return return_data[1] == b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01'\r
return False\r
@internal\r
def _isUpgradeGovernor(target_contract: address, user: address) -> bool:\r
return_data: (bool, Bytes[32]) = raw_call(\r
target_contract,\r
concat(\r
method_id("isUpgradeGovernor(address)"),\r
convert(user, bytes32)\r
),\r
max_outsize=32,\r
revert_on_failure=False\r
)\r
if return_data[0]:\r
return return_data[1] == b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01'\r
return False\r
\r
@internal\r
def _proxyIsGovernor(target_contract: address, user: address) -> bool:\r
return_data: (bool, Bytes[32]) = raw_call(\r
target_contract,\r
concat(\r
method_id("proxyIsGovernor(address)"),\r
convert(user, bytes32)\r
),\r
max_outsize=32,\r
revert_on_failure=False\r
)\r
if return_data[0]:\r
return return_data[1] == b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01'\r
return False\r
\r
@internal\r
def _starknetIsGovernor(target_contract: address, user: address) -> bool:\r
return_data: (bool, Bytes[32]) = raw_call(\r
target_contract,\r
concat(\r
method_id("starknetIsGovernor(address)"),\r
convert(user, bytes32)\r
),\r
max_outsize=32,\r
revert_on_failure=False\r
)\r
if return_data[0]:\r
return return_data[1] == b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01'\r
return False\r
\r
@internal\r
def _isDefaultRole(target_contract: address, user: address) -> bool:\r
return_data: (bool, Bytes[32]) = raw_call(\r
target_contract,\r
concat(\r
method_id("hasRole(bytes32,address)"),\r
convert(0, bytes32),\r
convert(user, bytes32)\r
),\r
max_outsize=32,\r
revert_on_failure=False\r
)\r
if return_data[0]:\r
return return_data[1] == b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01'\r
return False\r
\r
@internal\r
def _isMinterRole(target_contract: address, user: address) -> bool:\r
return_data: (bool, Bytes[32]) = raw_call(\r
target_contract,\r
concat(\r
method_id("hasRole(bytes32,address)"),\r
convert(71998914331801701415977457805802827292338598818749192222732755537001613711014, bytes32),\r
convert(user, bytes32)\r
),\r
max_outsize=32,\r
revert_on_failure=False\r
)\r
if return_data[0]:\r
return return_data[1] == b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01'\r
return False\r
\r
@external\r
def get_roles(target_contract: address, user: address) -> bool[12]:\r
gov_admin: bool = self._isGovernanceAdmin(target_contract, user)\r
app_admin: bool = self._isAppRoleAdmin(target_contract, user)\r
app_governor: bool = self._isAppGovernor(target_contract, user)\r
operator: bool = self._isOperator(target_contract, user)\r
security_admin: bool = self._isSecurityAdmin(target_contract, user)\r
security_agent: bool = self._isSecurityAgent(target_contract, user)\r
token_admin: bool = self._isTokenAdmin(target_contract, user)\r
upgrade_governor: bool = self._isUpgradeGovernor(target_contract, user)\r
proxy_governor: bool = self._proxyIsGovernor(target_contract, user)\r
starknet_governor: bool = self._starknetIsGovernor(target_contract, user)\r
default_role: bool = self._isDefaultRole(target_contract, user)\r
minter_role: bool = self._isMinterRole(target_contract, user)\r
\r
return [gov_admin, app_admin, app_governor, operator, security_admin, security_agent, token_admin, upgrade_governor, proxy_governor, starknet_governor, default_role, minter_role]"
}
},
"settings": {
"outputSelection": {
"contract.vy": [
"evm.bytecode",
"evm.deployedBytecode",
"abi"
]
},
"search_paths": [
"."
]
}
}}
Submitted on: 2025-09-18 10:50:56
Comments
Log in to comment.
No comments yet.