false
true
0

Contract Address Details

0x0F811b1AF2B6B447B008eFF31eCceeE5A0b1d842

Contract Name
RightsManager
Creator
0xb55a02–acea85 at 0x56c51a–20882c
Balance
0 PLS ( )
Tokens
Fetching tokens...
Transactions
Fetching transactions...
Transfers
Fetching transfers...
Gas Used
Fetching gas used...
Last Balance Update
25969010
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
This contract has been partially verified via Sourcify. View contract in Sourcify repository
Contract name:
RightsManager




Optimization enabled
true
Compiler version
v0.6.12+commit.27d51765




Optimization runs
200
EVM Version
istanbul




Verified at
2026-03-07T19:06:19.476208Z

RightsManager.sol

// SPDX-License-Identifier: GPL-3.0-or-later

pragma solidity 0.6.12;
pragma experimental ABIEncoderV2;


// 
// Needed to handle structures externally
/**
 * @author Balancer Labs
 * @title Manage Configurable Rights for the smart pool
 *      canPauseSwapping - can setPublicSwap back to false after turning it on
 *                         by default, it is off on initialization and can only be turned on
 *      canChangeSwapFee - can setSwapFee after initialization (by default, it is fixed at create time)
 *      canChangeWeights - can bind new token weights (allowed by default in base pool)
 *      canAddRemoveTokens - can bind/unbind tokens (allowed by default in base pool)
 *      canWhitelistLPs - can limit liquidity providers to a given set of addresses
 *      canChangeCap - can change the BSP cap (max # of pool tokens)
 */
library RightsManager {

    // Type declarations

    enum Permissions { PAUSE_SWAPPING,
                       CHANGE_SWAP_FEE,
                       CHANGE_WEIGHTS,
                       ADD_REMOVE_TOKENS,
                       WHITELIST_LPS,
                       CHANGE_CAP }

    struct Rights {
        bool canPauseSwapping;
        bool canChangeSwapFee;
        bool canChangeWeights;
        bool canAddRemoveTokens;
        bool canWhitelistLPs;
        bool canChangeCap;
    }

    // State variables (can only be constants in a library)
    bool public constant DEFAULT_CAN_PAUSE_SWAPPING = false;
    bool public constant DEFAULT_CAN_CHANGE_SWAP_FEE = true;
    bool public constant DEFAULT_CAN_CHANGE_WEIGHTS = true;
    bool public constant DEFAULT_CAN_ADD_REMOVE_TOKENS = false;
    bool public constant DEFAULT_CAN_WHITELIST_LPS = false;
    bool public constant DEFAULT_CAN_CHANGE_CAP = false;

    // Functions

    /**
     * @notice create a struct from an array (or return defaults)
     * @dev If you pass an empty array, it will construct it using the defaults
     * @param a - array input
     * @return Rights struct
     */ 
    function constructRights(bool[] calldata a) external pure returns (Rights memory) {
        if (a.length == 0) {
            return Rights(DEFAULT_CAN_PAUSE_SWAPPING,
                          DEFAULT_CAN_CHANGE_SWAP_FEE,
                          DEFAULT_CAN_CHANGE_WEIGHTS,
                          DEFAULT_CAN_ADD_REMOVE_TOKENS,
                          DEFAULT_CAN_WHITELIST_LPS,
                          DEFAULT_CAN_CHANGE_CAP);
        }
        else {
            return Rights(a[0], a[1], a[2], a[3], a[4], a[5]);
        }
    }

    /**
     * @notice Convert rights struct to an array (e.g., for events, GUI)
     * @dev avoids multiple calls to hasPermission
     * @param rights - the rights struct to convert
     * @return boolean array containing the rights settings
     */
    function convertRights(Rights calldata rights) external pure returns (bool[] memory) {
        bool[] memory result = new bool[](6);

        result[0] = rights.canPauseSwapping;
        result[1] = rights.canChangeSwapFee;
        result[2] = rights.canChangeWeights;
        result[3] = rights.canAddRemoveTokens;
        result[4] = rights.canWhitelistLPs;
        result[5] = rights.canChangeCap;

        return result;
    }

    // Though it is actually simple, the number of branches triggers code-complexity
    /* solhint-disable code-complexity */

    /**
     * @notice Externally check permissions using the Enum
     * @param self - Rights struct containing the permissions
     * @param permission - The permission to check
     * @return Boolean true if it has the permission
     */
    function hasPermission(Rights calldata self, Permissions permission) external pure returns (bool) {
        if (Permissions.PAUSE_SWAPPING == permission) {
            return self.canPauseSwapping;
        }
        else if (Permissions.CHANGE_SWAP_FEE == permission) {
            return self.canChangeSwapFee;
        }
        else if (Permissions.CHANGE_WEIGHTS == permission) {
            return self.canChangeWeights;
        }
        else if (Permissions.ADD_REMOVE_TOKENS == permission) {
            return self.canAddRemoveTokens;
        }
        else if (Permissions.WHITELIST_LPS == permission) {
            return self.canWhitelistLPs;
        }
        else if (Permissions.CHANGE_CAP == permission) {
            return self.canChangeCap;
        }
    }

    /* solhint-enable code-complexity */
}
        

Compiler Settings

{"remappings":[],"optimizer":{"runs":200,"enabled":true},"metadata":{"bytecodeHash":"ipfs"},"libraries":{},"evmVersion":"istanbul","compilationTarget":{"RightsManager.sol":"RightsManager"}}
              

Contract ABI

[{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"DEFAULT_CAN_ADD_REMOVE_TOKENS","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"DEFAULT_CAN_CHANGE_CAP","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"DEFAULT_CAN_CHANGE_SWAP_FEE","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"DEFAULT_CAN_CHANGE_WEIGHTS","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"DEFAULT_CAN_PAUSE_SWAPPING","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"DEFAULT_CAN_WHITELIST_LPS","inputs":[]},{"type":"function","stateMutability":"pure","outputs":[{"type":"tuple","name":"","internalType":"struct RightsManager.Rights","components":[{"type":"bool","name":"canPauseSwapping","internalType":"bool"},{"type":"bool","name":"canChangeSwapFee","internalType":"bool"},{"type":"bool","name":"canChangeWeights","internalType":"bool"},{"type":"bool","name":"canAddRemoveTokens","internalType":"bool"},{"type":"bool","name":"canWhitelistLPs","internalType":"bool"},{"type":"bool","name":"canChangeCap","internalType":"bool"}]}],"name":"constructRights","inputs":[{"type":"bool[]","name":"a","internalType":"bool[]"}]},{"type":"function","stateMutability":"pure","outputs":[{"type":"bool[]","name":"","internalType":"bool[]"}],"name":"convertRights","inputs":[{"type":"tuple","name":"rights","internalType":"struct RightsManager.Rights","components":[{"type":"bool","name":"canPauseSwapping","internalType":"bool"},{"type":"bool","name":"canChangeSwapFee","internalType":"bool"},{"type":"bool","name":"canChangeWeights","internalType":"bool"},{"type":"bool","name":"canAddRemoveTokens","internalType":"bool"},{"type":"bool","name":"canWhitelistLPs","internalType":"bool"},{"type":"bool","name":"canChangeCap","internalType":"bool"}]}]},{"type":"function","stateMutability":"pure","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"hasPermission","inputs":[{"type":"tuple","name":"self","internalType":"struct RightsManager.Rights","components":[{"type":"bool","name":"canPauseSwapping","internalType":"bool"},{"type":"bool","name":"canChangeSwapFee","internalType":"bool"},{"type":"bool","name":"canChangeWeights","internalType":"bool"},{"type":"bool","name":"canAddRemoveTokens","internalType":"bool"},{"type":"bool","name":"canWhitelistLPs","internalType":"bool"},{"type":"bool","name":"canChangeCap","internalType":"bool"}]},{"type":"RightsManager.Permissions","name":"permission","internalType":"enum RightsManager.Permissions"}]}]
              

Contract Creation Code

Verify & Publish
0x610696610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061009d5760003560e01c80634583544a116100705780634583544a146100c8578063710a51c2146100db578063c08473fc146100fb578063cb0d28f6146100c0578063dccf54e7146100a25761009d565b806308395a34146100a257806321bb04ae146100c05780632cc0c346146100a25780633d027b9d146100a2575b600080fd5b6100aa61011b565b6040516100b79190610605565b60405180910390f35b6100aa610120565b6100aa6100d6366004610585565b610125565b6100ee6100e936600461056a565b610205565b6040516100b791906105bf565b61010e6101093660046104d4565b61033b565b6040516100b79190610610565b600081565b600181565b600081600581111561013357fe5b61014b576101446020840184610543565b90506101ff565b81600581111561015757fe5b6001141561016f576101446040840160208501610543565b81600581111561017b57fe5b60021415610193576101446060840160408501610543565b81600581111561019f57fe5b600314156101b7576101446080840160608501610543565b8160058111156101c357fe5b600414156101db5761014460a0840160808501610543565b8160058111156101e757fe5b600514156101ff5761014460c0840160a08501610543565b92915050565b60408051600680825260e082019092526060918291906020820160c0803683370190505090506102386020840184610543565b8160008151811061024557fe5b9115156020928302919091018201526102649060408501908501610543565b8160018151811061027157fe5b911515602092830291909101909101526102916060840160408501610543565b8160028151811061029e57fe5b911515602092830291909101909101526102be6080840160608501610543565b816003815181106102cb57fe5b911515602092830291909101909101526102eb60a0840160808501610543565b816004815181106102f857fe5b9115156020928302919091019091015261031860c0840160a08501610543565b8160058151811061032557fe5b9115156020928302919091019091015292915050565b610343610488565b8161038357506040805160c081018252600080825260016020830181905292820192909252606081018290526080810182905260a08101919091526101ff565b6040518060c001604052808484600081811061039b57fe5b90506020020160208101906103b09190610543565b15158152602001848460018181106103c457fe5b90506020020160208101906103d99190610543565b15158152602001848460028181106103ed57fe5b90506020020160208101906104029190610543565b151581526020018484600381811061041657fe5b905060200201602081019061042b9190610543565b151581526020018484600481811061043f57fe5b90506020020160208101906104549190610543565b151581526020018484600581811061046857fe5b905060200201602081019061047d9190610543565b1515905290506101ff565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b600060c082840312156104ce578081fd5b50919050565b600080602083850312156104e6578182fd5b823567ffffffffffffffff808211156104fd578384fd5b818501915085601f830112610510578384fd5b81358181111561051e578485fd5b8660208083028501011115610531578485fd5b60209290920196919550909350505050565b600060208284031215610554578081fd5b81358015158114610563578182fd5b9392505050565b600060c0828403121561057b578081fd5b61056383836104bd565b60008060e08385031215610597578182fd5b6105a184846104bd565b915060c0830135600681106105b4578182fd5b809150509250929050565b6020808252825182820181905260009190848201906040850190845b818110156105f95783511515835292840192918401916001016105db565b50909695505050505050565b901515815260200190565b600060c08201905082511515825260208301511515602083015260408301511515604083015260608301511515606083015260808301511515608083015260a0830151151560a08301529291505056fea2646970667358221220fe97b5792a907dc5f35da664ffa44af41c07ba6088e7b502274bde7e813808ae64736f6c634300060c0033

Deployed ByteCode

0x730f811b1af2b6b447b008eff31ecceee5a0b1d842301460806040526004361061009d5760003560e01c80634583544a116100705780634583544a146100c8578063710a51c2146100db578063c08473fc146100fb578063cb0d28f6146100c0578063dccf54e7146100a25761009d565b806308395a34146100a257806321bb04ae146100c05780632cc0c346146100a25780633d027b9d146100a2575b600080fd5b6100aa61011b565b6040516100b79190610605565b60405180910390f35b6100aa610120565b6100aa6100d6366004610585565b610125565b6100ee6100e936600461056a565b610205565b6040516100b791906105bf565b61010e6101093660046104d4565b61033b565b6040516100b79190610610565b600081565b600181565b600081600581111561013357fe5b61014b576101446020840184610543565b90506101ff565b81600581111561015757fe5b6001141561016f576101446040840160208501610543565b81600581111561017b57fe5b60021415610193576101446060840160408501610543565b81600581111561019f57fe5b600314156101b7576101446080840160608501610543565b8160058111156101c357fe5b600414156101db5761014460a0840160808501610543565b8160058111156101e757fe5b600514156101ff5761014460c0840160a08501610543565b92915050565b60408051600680825260e082019092526060918291906020820160c0803683370190505090506102386020840184610543565b8160008151811061024557fe5b9115156020928302919091018201526102649060408501908501610543565b8160018151811061027157fe5b911515602092830291909101909101526102916060840160408501610543565b8160028151811061029e57fe5b911515602092830291909101909101526102be6080840160608501610543565b816003815181106102cb57fe5b911515602092830291909101909101526102eb60a0840160808501610543565b816004815181106102f857fe5b9115156020928302919091019091015261031860c0840160a08501610543565b8160058151811061032557fe5b9115156020928302919091019091015292915050565b610343610488565b8161038357506040805160c081018252600080825260016020830181905292820192909252606081018290526080810182905260a08101919091526101ff565b6040518060c001604052808484600081811061039b57fe5b90506020020160208101906103b09190610543565b15158152602001848460018181106103c457fe5b90506020020160208101906103d99190610543565b15158152602001848460028181106103ed57fe5b90506020020160208101906104029190610543565b151581526020018484600381811061041657fe5b905060200201602081019061042b9190610543565b151581526020018484600481811061043f57fe5b90506020020160208101906104549190610543565b151581526020018484600581811061046857fe5b905060200201602081019061047d9190610543565b1515905290506101ff565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b600060c082840312156104ce578081fd5b50919050565b600080602083850312156104e6578182fd5b823567ffffffffffffffff808211156104fd578384fd5b818501915085601f830112610510578384fd5b81358181111561051e578485fd5b8660208083028501011115610531578485fd5b60209290920196919550909350505050565b600060208284031215610554578081fd5b81358015158114610563578182fd5b9392505050565b600060c0828403121561057b578081fd5b61056383836104bd565b60008060e08385031215610597578182fd5b6105a184846104bd565b915060c0830135600681106105b4578182fd5b809150509250929050565b6020808252825182820181905260009190848201906040850190845b818110156105f95783511515835292840192918401916001016105db565b50909695505050505050565b901515815260200190565b600060c08201905082511515825260208301511515602083015260408301511515604083015260608301511515606083015260808301511515608083015260a0830151151560a08301529291505056fea2646970667358221220fe97b5792a907dc5f35da664ffa44af41c07ba6088e7b502274bde7e813808ae64736f6c634300060c0033