contract

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": [
      "."
    ]
  }
}}

Tags:
Proxy, Upgradeable, Factory|addr:0xff3f519bbb44bfa52275ed15fbd75c7d9bf7460b|verified:true|block:23383133|tx:0xb35c82949db28ed84e737fb366e0778d7522571767d9379d44cd138c128f69cc|first_check:1758185454

Submitted on: 2025-09-18 10:50:56

Comments

Log in to comment.

No comments yet.