Token PolyDex.Fi

 

Overview ERC-20

Price
$0.00 @ 0.000000 MATIC
Fully Diluted Market Cap
Total Supply:
3,034,913.045669 PLX

Holders:
4,219 addresses
Contract:
0x7a5dc8a09c831251026302c93a778748dd48b4df0x7A5dc8A09c831251026302C93A778748dd48b4DF

Decimals:
18

Social Profiles:
Not Available, Update ?

 
Balance
0 PLX

Value
$0.00
0xc44e71debf89d414a262edadc44797eba093c6b0
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

Click here to update the token ICO / general information
# Exchange Pair Price  24H Volume % Volume
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UChildERC20Proxy

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 9999 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2021-06-10
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;

interface IERCProxy {
    function proxyType() external pure returns (uint256 proxyTypeId);

    function implementation() external view returns (address codeAddr);
}

abstract contract Proxy is IERCProxy {
    function delegatedFwd(address _dst, bytes memory _calldata) internal {
        // solium-disable-next-line security/no-inline-assembly
        assembly {
            let result := delegatecall(sub(gas(), 10000), _dst, add(_calldata, 0x20), mload(_calldata), 0, 0)
            let size := returndatasize()

            let ptr := mload(0x40)
            returndatacopy(ptr, 0, size)

            // revert instead of invalid() bc if the underlying call failed with invalid() it already wasted gas.
            // if the call returned error data, forward it
            switch result
                case 0 {
                    revert(ptr, size)
                }
                default {
                    return(ptr, size)
                }
        }
    }

    function proxyType() external pure virtual override returns (uint256 proxyTypeId) {
        // Upgradeable proxy
        proxyTypeId = 2;
    }

    function implementation() external view virtual override returns (address);
}

contract UpgradableProxy is Proxy {
    event ProxyUpdated(address indexed _new, address indexed _old);
    event ProxyOwnerUpdate(address _new, address _old);

    bytes32 constant IMPLEMENTATION_SLOT = keccak256("matic.network.proxy.implementation");
    bytes32 constant OWNER_SLOT = keccak256("matic.network.proxy.owner");

    constructor(address _proxyTo) public {
        setProxyOwner(msg.sender);
        setImplementation(_proxyTo);
    }

    fallback() external payable {
        delegatedFwd(loadImplementation(), msg.data);
    }

    receive() external payable {
        delegatedFwd(loadImplementation(), msg.data);
    }

    modifier onlyProxyOwner() {
        require(loadProxyOwner() == msg.sender, "NOT_OWNER");
        _;
    }

    function proxyOwner() external view returns (address) {
        return loadProxyOwner();
    }

    function loadProxyOwner() internal view returns (address) {
        address _owner;
        bytes32 position = OWNER_SLOT;
        assembly {
            _owner := sload(position)
        }
        return _owner;
    }

    function implementation() external view override returns (address) {
        return loadImplementation();
    }

    function loadImplementation() internal view returns (address) {
        address _impl;
        bytes32 position = IMPLEMENTATION_SLOT;
        assembly {
            _impl := sload(position)
        }
        return _impl;
    }

    function transferProxyOwnership(address newOwner) public onlyProxyOwner {
        require(newOwner != address(0), "ZERO_ADDRESS");
        emit ProxyOwnerUpdate(newOwner, loadProxyOwner());
        setProxyOwner(newOwner);
    }

    function setProxyOwner(address newOwner) private {
        bytes32 position = OWNER_SLOT;
        assembly {
            sstore(position, newOwner)
        }
    }

    function updateImplementation(address _newProxyTo) public onlyProxyOwner {
        require(_newProxyTo != address(0x0), "INVALID_PROXY_ADDRESS");
        require(isContract(_newProxyTo), "DESTINATION_ADDRESS_IS_NOT_A_CONTRACT");

        emit ProxyUpdated(_newProxyTo, loadImplementation());

        setImplementation(_newProxyTo);
    }

    function updateAndCall(address _newProxyTo, bytes memory data) public payable onlyProxyOwner {
        updateImplementation(_newProxyTo);

        (bool success, bytes memory returnData) = address(this).call{value: msg.value}(data);
        require(success, string(returnData));
    }

    function setImplementation(address _newProxyTo) private {
        bytes32 position = IMPLEMENTATION_SLOT;
        assembly {
            sstore(position, _newProxyTo)
        }
    }

    function isContract(address _target) internal view returns (bool) {
        if (_target == address(0)) {
            return false;
        }

        uint256 size;
        assembly {
            size := extcodesize(_target)
        }
        return size > 0;
    }
}

contract UChildERC20Proxy is UpgradableProxy {
    constructor(address _proxyTo) public UpgradableProxy(_proxyTo) {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_proxyTo","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_new","type":"address"},{"indexed":false,"internalType":"address","name":"_old","type":"address"}],"name":"ProxyOwnerUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_new","type":"address"},{"indexed":true,"internalType":"address","name":"_old","type":"address"}],"name":"ProxyUpdated","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxyOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxyType","outputs":[{"internalType":"uint256","name":"proxyTypeId","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferProxyOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newProxyTo","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"updateAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_newProxyTo","type":"address"}],"name":"updateImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b506040516109ff3803806109ff8339818101604052602081101561003357600080fd5b50518061003f3361004f565b61004881610073565b5050610097565b7f44f6e2e8884cba1236b7f22f351fa5d88b17292b7e0225ca47e5ecdf6055cdd655565b7fbaab7dbf64751104133af04abc7d9979f0fda3b059a322a8333f533d3f32bf7f55565b610959806100a66000396000f3fe6080604052600436106100695760003560e01c80635c60da1b116100435780635c60da1b14610168578063d88ca2c81461017d578063f1739cae14610240576100b8565b8063025313a2146100c3578063025b22bc146101015780634555d5c914610141576100b8565b366100b8576100b6610079610280565b6000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506102a592505050565b005b6100b6610079610280565b3480156100cf57600080fd5b506100d86102cd565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561010d57600080fd5b506100b66004803603602081101561012457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166102dc565b34801561014d57600080fd5b506101566104b4565b60408051918252519081900360200190f35b34801561017457600080fd5b506100d86104b9565b6100b66004803603604081101561019357600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691908101906040810160208201356401000000008111156101cb57600080fd5b8201836020820111156101dd57600080fd5b803590602001918460018302840111640100000000831117156101ff57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506104c3945050505050565b34801561024c57600080fd5b506100b66004803603602081101561026357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106d9565b7fbaab7dbf64751104133af04abc7d9979f0fda3b059a322a8333f533d3f32bf7f5490565b600080825160208401856127105a03f43d604051816000823e8280156102c9578282f35b8282fd5b60006102d7610861565b905090565b336102e5610861565b73ffffffffffffffffffffffffffffffffffffffff161461036757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e45520000000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166103e957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f494e56414c49445f50524f58595f414444524553530000000000000000000000604482015290519081900360640190fd5b6103f281610886565b610447576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806108ff6025913960400191505060405180910390fd5b61044f610280565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fd32d24edea94f55e932d9a008afc425a8561462d1b1f57bc6e508e9a6b9509e160405160405180910390a36104b1816108b6565b50565b600290565b60006102d7610280565b336104cc610861565b73ffffffffffffffffffffffffffffffffffffffff161461054e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e45520000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610557826102dc565b600060603073ffffffffffffffffffffffffffffffffffffffff1634846040518082805190602001908083835b602083106105c157805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610584565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610623576040519150601f19603f3d011682016040523d82523d6000602084013e610628565b606091505b50915091508181906106d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561069757818101518382015260200161067f565b50505050905090810190601f1680156106c45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5050505050565b336106e2610861565b73ffffffffffffffffffffffffffffffffffffffff161461076457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e45520000000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166107e657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f414444524553530000000000000000000000000000000000000000604482015290519081900360640190fd5b7fdbe5fd65bcdbae152f24ab660ea68e72b4d4705b57b16e0caae994e214680ee281610810610861565b604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a16104b1816108da565b7f44f6e2e8884cba1236b7f22f351fa5d88b17292b7e0225ca47e5ecdf6055cdd65490565b600073ffffffffffffffffffffffffffffffffffffffff82166108ab575060006108b1565b50803b15155b919050565b7fbaab7dbf64751104133af04abc7d9979f0fda3b059a322a8333f533d3f32bf7f55565b7f44f6e2e8884cba1236b7f22f351fa5d88b17292b7e0225ca47e5ecdf6055cdd65556fe44455354494e4154494f4e5f414444524553535f49535f4e4f545f415f434f4e5452414354a26469706673582212206ec99cea16ef7014b53f06ebfdf2414546093ad59d7375762bd9689b03a83d7864736f6c634300060c0033000000000000000000000000d4a7d5ca5232976ebf9c28b7231bfdbf4c4eee95

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000d4a7d5ca5232976ebf9c28b7231bfdbf4c4eee95

-----Decoded View---------------
Arg [0] : _proxyTo (address): 0xd4a7d5ca5232976ebf9c28b7231bfdbf4c4eee95

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000d4a7d5ca5232976ebf9c28b7231bfdbf4c4eee95


Deployed ByteCode Sourcemap

4326:120:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:44;1919:20;:18;:20::i;:::-;1941:8;;1906:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1906:12:0;;-1:-1:-1;;;1906:44:0:i;:::-;4326:120;;1808:44;1821:20;:18;:20::i;2083:96::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3200:345;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3200:345:0;;;;:::i;1067:146::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2420:113;;;;;;;;;;;;;:::i;3553:289::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3553:289:0;;-1:-1:-1;3553:289:0;;-1:-1:-1;;;;;3553:289:0:i;2784:232::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2784:232:0;;;;:::i;2541:235::-;1511:47;2720:15;2541:235;:::o;280:779::-;544:1;541;529:9;523:16;516:4;505:9;501:20;495:4;487:5;480;476:17;463:83;572:16;621:4;615:11;663:4;660:1;655:3;640:28;866:6;890:66;;;;1017:4;1012:3;1005:17;890:66;932:4;927:3;920:17;2083:96;2128:7;2155:16;:14;:16::i;:::-;2148:23;;2083:96;:::o;3200:345::-;2031:10;2011:16;:14;:16::i;:::-;:30;;;2003:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3292:27:::1;::::0;::::1;3284:61;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;3364:23;3375:11;3364:10;:23::i;:::-;3356:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3473:20;:18;:20::i;:::-;3447:47;;3460:11;3447:47;;;;;;;;;;;;3507:30;3525:11;3507:17;:30::i;:::-;3200:345:::0;:::o;1067:146::-;1204:1;;1067:146::o;2420:113::-;2478:7;2505:20;:18;:20::i;3553:289::-;2031:10;2011:16;:14;:16::i;:::-;:30;;;2003:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3657:33:::1;3678:11;3657:20;:33::i;:::-;3704:12;3718:23;3753:4;3745:18;;3771:9;3782:4;3745:42;;;;;;;;;;;;;;;;;;;::::0;;;;;;;;;::::1;::::0;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3703:84;;;;3806:7;3822:10;3798:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2066:1;;3553:289:::0;;:::o;2784:232::-;2031:10;2011:16;:14;:16::i;:::-;:30;;;2003:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2875:22:::1;::::0;::::1;2867:47;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;2930:44;2947:8;2957:16;:14;:16::i;:::-;2930:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;2985:23;2999:8;2985:13;:23::i;2187:225::-:0;1595:38;2355:15;2187:225;:::o;4045:274::-;4105:4;4126:21;;;4122:66;;-1:-1:-1;4171:5:0;4164:12;;4122:66;-1:-1:-1;4255:20:0;;4303:8;;4045:274;;;;:::o;3850:187::-;1511:47;3990:29;3975:55::o;3024:168::-;1595:38;3148:26;3133:52::o

Swarm Source

ipfs://6ec99cea16ef7014b53f06ebfdf2414546093ad59d7375762bd9689b03a83d78
Loading