Contract 0x359A87E08Ffd7dFf6ff40e459413c8805684D89C

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x22d99ac5ef3f8c56c36a1481696dfdbfa873885b5f21a5f1df369b7f881ff38eInitialize18822462022-03-13 11:25:53447 days 15 hrs agoDarkCrypto Finance: Deployer IN  DarkNess Finance: Collateral Reserve0 CRO2.138810
0xd650d1c505a13821ffde27f012096425f8ba9f8b46b229117bf314df1151cdab0x6080604018821792022-03-13 11:19:23447 days 15 hrs agoDarkCrypto Finance: Deployer IN  Contract Creation0 CRO3.0447750
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x6e58e33b7f6d72a1ef7b6fa23b917ccb1474266b

Contract Name:
UpgradableProxy

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at cronoscan.com on 2022-02-25
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.7.6;

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) {
        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 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"}]

608060405234801561001057600080fd5b506040516109fc3803806109fc8339818101604052602081101561003357600080fd5b505161003e3361004d565b61004781610071565b50610095565b7f44f6e2e8884cba1236b7f22f351fa5d88b17292b7e0225ca47e5ecdf6055cdd655565b7fbaab7dbf64751104133af04abc7d9979f0fda3b059a322a8333f533d3f32bf7f55565b610958806100a46000396000f3fe6080604052600436106100695760003560e01c80635c60da1b116100435780635c60da1b14610168578063d88ca2c81461017d578063f1739cae14610240576100b8565b8063025313a2146100c3578063025b22bc146101015780634555d5c914610141576100b8565b366100b8576100b6610079610280565b6000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506102a592505050565b005b6100b6610079610280565b3480156100cf57600080fd5b506100d86102cd565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561010d57600080fd5b506100b66004803603602081101561012457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166102dc565b34801561014d57600080fd5b506101566104b4565b60408051918252519081900360200190f35b34801561017457600080fd5b506100d86104b9565b6100b66004803603604081101561019357600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691908101906040810160208201356401000000008111156101cb57600080fd5b8201836020820111156101dd57600080fd5b803590602001918460018302840111640100000000831117156101ff57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506104c3945050505050565b34801561024c57600080fd5b506100b66004803603602081101561026357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106d8565b7fbaab7dbf64751104133af04abc7d9979f0fda3b059a322a8333f533d3f32bf7f5490565b600080825160208401856127105a03f43d604051816000823e8280156102c9578282f35b8282fd5b60006102d7610860565b905090565b336102e5610860565b73ffffffffffffffffffffffffffffffffffffffff161461036757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e45520000000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166103e957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f494e56414c49445f50524f58595f414444524553530000000000000000000000604482015290519081900360640190fd5b6103f281610885565b610447576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806108fe6025913960400191505060405180910390fd5b61044f610280565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fd32d24edea94f55e932d9a008afc425a8561462d1b1f57bc6e508e9a6b9509e160405160405180910390a36104b1816108b5565b50565b600290565b60006102d7610280565b336104cc610860565b73ffffffffffffffffffffffffffffffffffffffff161461054e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e45520000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610557826102dc565b6000803073ffffffffffffffffffffffffffffffffffffffff1634846040518082805190602001908083835b602083106105c057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610583565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610622576040519150601f19603f3d011682016040523d82523d6000602084013e610627565b606091505b50915091508181906106d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561069657818101518382015260200161067e565b50505050905090810190601f1680156106c35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5050505050565b336106e1610860565b73ffffffffffffffffffffffffffffffffffffffff161461076357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e45520000000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166107e557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f414444524553530000000000000000000000000000000000000000604482015290519081900360640190fd5b7fdbe5fd65bcdbae152f24ab660ea68e72b4d4705b57b16e0caae994e214680ee28161080f610860565b604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a16104b1816108d9565b7f44f6e2e8884cba1236b7f22f351fa5d88b17292b7e0225ca47e5ecdf6055cdd65490565b600073ffffffffffffffffffffffffffffffffffffffff82166108aa575060006108b0565b50803b15155b919050565b7fbaab7dbf64751104133af04abc7d9979f0fda3b059a322a8333f533d3f32bf7f55565b7f44f6e2e8884cba1236b7f22f351fa5d88b17292b7e0225ca47e5ecdf6055cdd65556fe44455354494e4154494f4e5f414444524553535f49535f4e4f545f415f434f4e5452414354a2646970667358221220babeb114b63455d74d2df4dc1eb917bed276967ca3da60aa335eb6091ed3482764736f6c6343000706003300000000000000000000000001e1cb5927ae8f7a8b0bb3c2f81535b1b0c10af6

Deployed ByteCode Sourcemap

1445:3114:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2050:44;2063:20;:18;:20::i;:::-;2085:8;;2050:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2050:12:0;;-1:-1:-1;;;2050:44:0:i;:::-;1445:3114;;1952:44;1965:20;:18;:20::i;2227:96::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3344:382;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3344:382:0;;;;:::i;1159:196::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2564:113;;;;;;;;;;;;;:::i;3734:345::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3734:345:0;;-1:-1:-1;3734:345:0;;-1:-1:-1;;;;;3734:345:0:i;2928:232::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2928:232:0;;;;:::i;2685:235::-;1662:47;2864:15;2685:235;:::o;279:872::-;646:1;626;597:9;591:16;567:4;556:9;552:20;529:4;504:5;497;493:17;462:200;688:16;737:4;731:11;779:4;776:1;771:3;756:28;982:6;1002:58;;;;1113:4;1108:3;1101:17;1002:58;1040:4;1035:3;1028:17;2227:96;2272:7;2299:16;:14;:16::i;:::-;2292:23;;2227:96;:::o;3344:382::-;2175:10;2155:16;:14;:16::i;:::-;:30;;;2147:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3436:27:::1;::::0;::::1;3428:61;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;3522:23;3533:11;3522:10;:23::i;:::-;3500:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3654:20;:18;:20::i;:::-;3628:47;;3641:11;3628:47;;;;;;;;;;;;3688:30;3706:11;3688:17;:30::i;:::-;3344:382:::0;:::o;1159:196::-;1346:1;;1159:196::o;2564:113::-;2622:7;2649:20;:18;:20::i;3734:345::-;2175:10;2155:16;:14;:16::i;:::-;:30;;;2147:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3870:33:::1;3891:11;3870:20;:33::i;:::-;3917:12;3931:23:::0;3966:4:::1;3958:18;;3998:9;4019:4;3958:66;;;;;;;;;;;;;;;;;;;::::0;;;;;;;;;::::1;::::0;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3916:108;;;;4043:7;4059:10;4035:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2210:1;;3734:345:::0;;:::o;2928:232::-;2175:10;2155:16;:14;:16::i;:::-;:30;;;2147:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3019:22:::1;::::0;::::1;3011:47;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;3074:44;3091:8;3101:16;:14;:16::i;:::-;3074:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;3129:23;3143:8;3129:13;:23::i;2331:225::-:0;1746:38;2499:15;2331:225;:::o;4282:274::-;4342:4;4363:21;;;4359:66;;-1:-1:-1;4408:5:0;4401:12;;4359:66;-1:-1:-1;4492:20:0;;4540:8;;4282:274;;;;:::o;4087:187::-;1662:47;4227:29;4212:55::o;3168:168::-;1746:38;3292:26;3277:52::o

Swarm Source

ipfs://babeb114b63455d74d2df4dc1eb917bed276967ca3da60aa335eb6091ed34827
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.