false
true
0

Contract Address Details

0xF869538e3904778A0cb1FF620C8E83c7df36B946

Contract Name
DoubleProxy
Creator
0x93cdf4–a34bf5 at 0x5f5103–032adf
Balance
0 PLS ( )
Tokens
Fetching tokens...
Transactions
Fetching transactions...
Transfers
Fetching transfers...
Gas Used
Fetching gas used...
Last Balance Update
26353249
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:
DoubleProxy




Optimization enabled
true
Compiler version
v0.6.11+commit.5ef660b1




Optimization runs
200
EVM Version
istanbul




Verified at
2026-04-22T20:40:52.617346Z

DoubleProxy.sol

pragma solidity ^0.6.0;

import "./IDoubleProxy.sol";

contract DoubleProxy is IDoubleProxy {

    address private _proxy;

    mapping(address => bool) private _isProxy;

    address[] private _proxies;

    constructor(address[] memory proxies, address currentProxy) public {
        init(proxies, currentProxy);
    }

    function init(address[] memory proxies, address currentProxy) public override {
        require(_proxies.length == 0, "Init already called!");
        for(uint256 i = 0; i < proxies.length; i++) {
            if(proxies[i] != address(0)) {
                _proxies.push(proxies[i]);
                _isProxy[proxies[i]] = true;
            }
        }
        if(currentProxy != address(0)) {
            _proxy = currentProxy;
            if(!_isProxy[currentProxy]) {
                _proxies.push(currentProxy);
                _isProxy[currentProxy] = true;
            }
        }
    }

    function proxy() public override view returns(address) {
        return _proxy;
    }

    function setProxy() public override {
        require(_proxy == address(0) || _proxy == msg.sender, _proxy != address(0) ? "Proxy already set!" : "Only Proxy can toggle itself!");
        _proxy = _proxy == address(0) ?  msg.sender : address(0);
        if(_proxy != address(0) && !_isProxy[_proxy]) {
            _proxies.push(_proxy);
            _isProxy[_proxy] = true;
        }
    }

    function isProxy(address addr) public override view returns(bool) {
        return _isProxy[addr];
    }

    function proxiesLength() public override view returns(uint256) {
        return _proxies.length;
    }

    function proxies() public override view returns(address[] memory) {
        return proxies(0, _proxies.length);
    }

    function proxies(uint256 start, uint256 offset) public override view returns(address[] memory out) {
        require(start < _proxies.length, "Invalid start");
        uint256 length = offset > _proxies.length ? _proxies.length : offset;
        out = new address[](length);
        length += start;
        length = length > _proxies.length ? _proxies.length : length;
        uint256 pos = 0;
        for(uint256 i = start; i < length; i++) {
            out[pos++] = _proxies[i];
        }
    }
}
        

/

pragma solidity ^0.6.0;

interface IDoubleProxy {
    function init(address[] calldata proxies, address currentProxy) external;
    function proxy() external view returns(address);
    function setProxy() external;
    function isProxy(address) external view returns(bool);
    function proxiesLength() external view returns(uint256);
    function proxies(uint256 start, uint256 offset) external view returns(address[] memory);
    function proxies() external view returns(address[] memory);
}
          

Compiler Settings

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

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"address[]","name":"proxies","internalType":"address[]"},{"type":"address","name":"currentProxy","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"init","inputs":[{"type":"address[]","name":"proxies","internalType":"address[]"},{"type":"address","name":"currentProxy","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isProxy","inputs":[{"type":"address","name":"addr","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address[]","name":"","internalType":"address[]"}],"name":"proxies","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address[]","name":"out","internalType":"address[]"}],"name":"proxies","inputs":[{"type":"uint256","name":"start","internalType":"uint256"},{"type":"uint256","name":"offset","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"proxiesLength","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"proxy","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setProxy","inputs":[]}]
              

Contract Creation Code

Verify & Publish
0x588073fa7bd9fee90745189b99b95aff42ce681c58cb49803b80938091923cf3

Deployed ByteCode

0x608060405234801561001057600080fd5b506004361061007d5760003560e01c8063a9f7dfbf1161005b578063a9f7dfbf14610174578063bcc38d591461018e578063de530700146101e6578063ec556889146102095761007d565b806329710388146100825780633914a04f146100bc5780637e1ddf64146100c6575b600080fd5b6100a86004803603602081101561009857600080fd5b50356001600160a01b031661022d565b604080519115158252519081900360200190f35b6100c461024b565b005b6100c4600480360360408110156100dc57600080fd5b8101906020810181356401000000008111156100f757600080fd5b82018360208201111561010957600080fd5b8035906020019184602083028401116401000000008311171561012b57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550505090356001600160a01b0316915061043e9050565b61017c61060e565b60408051918252519081900360200190f35b610196610614565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156101d25781810151838201526020016101ba565b505050509050019250505060405180910390f35b610196600480360360408110156101fc57600080fd5b508035906020013561062b565b610211610755565b604080516001600160a01b039092168252519081900360200190f35b6001600160a01b031660009081526001602052604090205460ff1690565b6000546001600160a01b0316158061026d57506000546001600160a01b031633145b6000546001600160a01b03166102b8576040518060400160405280601d81526020017f4f6e6c792050726f78792063616e20746f67676c6520697473656c66210000008152506102e4565b6040518060400160405280601281526020017150726f787920616c7265616479207365742160701b8152505b9061036d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561033257818101518382015260200161031a565b50505050905090810190601f16801561035f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000546001600160a01b031615610386576000610388565b335b600080546001600160a01b0319166001600160a01b03928316179081905516158015906103ce5750600080546001600160a01b031681526001602052604090205460ff16155b1561043c57600080546002805460018181019092557f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b039384161790558254909116825260208190526040909120805460ff191690911790555b565b6002541561048a576040805162461bcd60e51b8152602060048201526014602482015273496e697420616c72656164792063616c6c65642160601b604482015290519081900360640190fd5b60005b82518110156105665760006001600160a01b03168382815181106104ad57fe5b60200260200101516001600160a01b03161461055e5760028382815181106104d157fe5b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091829186908590811061051e57fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60010161048d565b506001600160a01b0381161561060a57600080546001600160a01b0319166001600160a01b038316908117825581526001602052604090205460ff1661060a576002805460018082019092557f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b0384169081179091556000908152602082905260409020805460ff191690911790555b5050565b60025490565b6060610626600060028054905061062b565b905090565b6002546060908310610674576040805162461bcd60e51b815260206004820152600d60248201526c125b9d985b1a59081cdd185c9d609a1b604482015290519081900360640190fd5b6002546000908311610686578261068a565b6002545b90508067ffffffffffffffff811180156106a357600080fd5b506040519080825280602002602001820160405280156106cd578160200160208202803683370190505b506002549092509084019081116106e457806106e8565b6002545b90506000845b8281101561074c576002818154811061070357fe5b600091825260209091200154845160018401936001600160a01b03909216918691811061072c57fe5b6001600160a01b03909216602092830291909101909101526001016106ee565b50505092915050565b6000546001600160a01b03169056fea2646970667358221220d0e4f74776aa1985b0f6c3a16eec3f39928e11e5051cf4d89e2ab209f388f10a64736f6c634300060b0033