Token USD Coin (PoS)

 

Overview ERC-20

Price
$1.00 @ 1.119770 MATIC (-0.12%)
Fully Diluted Market Cap
Total Supply:
815,687,551.798468 USDC

Holders:
1,208,163 addresses
 
Balance
0 USDC

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

OVERVIEW

USD Coin is an ERC-20 stablecoin brought to you by Circle and Coinbase. It is issued by regulated and licensed financial institutions that maintain full reserves of the equivalent fiat currency.

Market

Volume (24H):$1,894,814,738.00
Market Capitalization:$42,805,986,243.00
Circulating Supply:42,827,105,788.00 USDC
Market Data Source: Coinmarketcap


Update? 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 200 runs

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

// SPDX-License-Identifier: MIT

// File: contracts/lib/Proxy/IERCProxy.sol

pragma solidity 0.6.12;

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

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

// File: contracts/lib/Proxy/Proxy.sol

pragma solidity 0.6.12;

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
        virtual
        override
        pure
        returns (uint256 proxyTypeId)
    {
        // Upgradeable proxy
        proxyTypeId = 2;
    }

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

// File: contracts/lib/Proxy/UpgradableProxy.sol

pragma solidity 0.6.12;

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

    bytes32 public constant IMPLEMENTATION_SLOT = keccak256(
        "matic.network.proxy.implementation"
    );
    bytes32 public 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 override view 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);

        // solhint-disable-next-line avoid-low-level-calls
        (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;
    }
}

// File: contracts/UChildERC20Proxy.sol

pragma solidity 0.6.12;

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_SLOT","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OWNER_SLOT","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"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"}]

608060405234801561001057600080fd5b5060405161089b38038061089b8339818101604052602081101561003357600080fd5b50518061003f3361004f565b61004881610073565b5050610097565b7f44f6e2e8884cba1236b7f22f351fa5d88b17292b7e0225ca47e5ecdf6055cdd655565b7fbaab7dbf64751104133af04abc7d9979f0fda3b059a322a8333f533d3f32bf7f55565b6107f5806100a66000396000f3fe60806040526004361061007f5760003560e01c80635c60da1b1161004e5780635c60da1b14610179578063963949a31461018e578063d88ca2c8146101a3578063f1739cae14610259576100ce565b8063025313a2146100d9578063025b22bc1461010a578063086fc0c71461013d5780634555d5c914610164576100ce565b366100ce576100cc61008f61028c565b6000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506102b192505050565b005b6100cc61008f61028c565b3480156100e557600080fd5b506100ee6102d9565b604080516001600160a01b039092168252519081900360200190f35b34801561011657600080fd5b506100cc6004803603602081101561012d57600080fd5b50356001600160a01b03166102e8565b34801561014957600080fd5b50610152610422565b60408051918252519081900360200190f35b34801561017057600080fd5b50610152610446565b34801561018557600080fd5b506100ee61044b565b34801561019a57600080fd5b50610152610455565b6100cc600480360360408110156101b957600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156101e457600080fd5b8201836020820111156101f657600080fd5b8035906020019184600183028401116401000000008311171561021857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610479945050505050565b34801561026557600080fd5b506100cc6004803603602081101561027c57600080fd5b50356001600160a01b031661060f565b7fbaab7dbf64751104133af04abc7d9979f0fda3b059a322a8333f533d3f32bf7f5490565b600080825160208401856127105a03f43d604051816000823e8280156102d5578282f35b8282fd5b60006102e361070a565b905090565b336102f161070a565b6001600160a01b031614610338576040805162461bcd60e51b81526020600482015260096024820152682727aa2fa7aba722a960b91b604482015290519081900360640190fd5b6001600160a01b03811661038b576040805162461bcd60e51b8152602060048201526015602482015274494e56414c49445f50524f58595f4144445245535360581b604482015290519081900360640190fd5b6103948161072f565b6103cf5760405162461bcd60e51b815260040180806020018281038252602581526020018061079b6025913960400191505060405180910390fd5b6103d761028c565b6001600160a01b0316816001600160a01b03167fd32d24edea94f55e932d9a008afc425a8561462d1b1f57bc6e508e9a6b9509e160405160405180910390a361041f81610752565b50565b7fbaab7dbf64751104133af04abc7d9979f0fda3b059a322a8333f533d3f32bf7f81565b600290565b60006102e361028c565b7f44f6e2e8884cba1236b7f22f351fa5d88b17292b7e0225ca47e5ecdf6055cdd681565b3361048261070a565b6001600160a01b0316146104c9576040805162461bcd60e51b81526020600482015260096024820152682727aa2fa7aba722a960b91b604482015290519081900360640190fd5b6104d2826102e8565b60006060306001600160a01b031634846040518082805190602001908083835b602083106105115780518252601f1990920191602091820191016104f2565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610573576040519150601f19603f3d011682016040523d82523d6000602084013e610578565b606091505b50915091508181906106085760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156105cd5781810151838201526020016105b5565b50505050905090810190601f1680156105fa5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5050505050565b3361061861070a565b6001600160a01b03161461065f576040805162461bcd60e51b81526020600482015260096024820152682727aa2fa7aba722a960b91b604482015290519081900360640190fd5b6001600160a01b0381166106a9576040805162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b604482015290519081900360640190fd5b7fdbe5fd65bcdbae152f24ab660ea68e72b4d4705b57b16e0caae994e214680ee2816106d361070a565b60405180836001600160a01b03168152602001826001600160a01b031681526020019250505060405180910390a161041f81610776565b7f44f6e2e8884cba1236b7f22f351fa5d88b17292b7e0225ca47e5ecdf6055cdd65490565b60006001600160a01b0382166107475750600061074d565b50803b15155b919050565b7fbaab7dbf64751104133af04abc7d9979f0fda3b059a322a8333f533d3f32bf7f55565b7f44f6e2e8884cba1236b7f22f351fa5d88b17292b7e0225ca47e5ecdf6055cdd65556fe44455354494e4154494f4e5f414444524553535f49535f4e4f545f415f434f4e5452414354a2646970667358221220696f7ae6f368606e2fb937629b8621028df4794f0d256c4f4b869fbe6350edcb64736f6c634300060c0033000000000000000000000000dd9185db084f5c4fff3b4f70e7ba62123b812226

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

000000000000000000000000dd9185db084f5c4fff3b4f70e7ba62123b812226

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

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


Deployed ByteCode Sourcemap

4940:120:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2297:44;2310:20;:18;:20::i;:::-;2332:8;;2297:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2297:12:0;;-1:-1:-1;;;2297:44:0:i;:::-;4940:120;;2199:44;2212:20;:18;:20::i;2474:96::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;2474:96:0;;;;;;;;;;;;;;3591:382;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3591:382:0;-1:-1:-1;;;;;3591:382:0;;:::i;1833:109::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1299:196;;;;;;;;;;;;;:::i;2811:113::-;;;;;;;;;;;;;:::i;1949:75::-;;;;;;;;;;;;;:::i;3981:405::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3981:405:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3981:405:0;;-1:-1:-1;3981:405:0;;-1:-1:-1;;;;;3981:405:0:i;3175:232::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3175:232:0;-1:-1:-1;;;;;3175:232:0;;:::i;2932:235::-;1879:63;3111:15;2932:235;:::o;395:896::-;762:1;742;713:9;707:16;683:4;672:9;668:20;645:4;620:5;613;609:17;578:200;804:16;853:4;847:11;895:4;892:1;887:3;872:28;1098:6;1122:66;;;;1249:4;1244:3;1237:17;1122:66;1164:4;1159:3;1152:17;2474:96;2519:7;2546:16;:14;:16::i;:::-;2539:23;;2474:96;:::o;3591:382::-;2422:10;2402:16;:14;:16::i;:::-;-1:-1:-1;;;;;2402:30:0;;2394:52;;;;;-1:-1:-1;;;2394:52:0;;;;;;;;;;;;-1:-1:-1;;;2394:52:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;3683:27:0;::::1;3675:61;;;::::0;;-1:-1:-1;;;3675:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;3675:61:0;;;;;;;;;;;;;::::1;;3769:23;3780:11;3769:10;:23::i;:::-;3747:110;;;;-1:-1:-1::0;;;3747:110:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3901:20;:18;:20::i;:::-;-1:-1:-1::0;;;;;3875:47:0::1;3888:11;-1:-1:-1::0;;;;;3875:47:0::1;;;;;;;;;;;3935:30;3953:11;3935:17;:30::i;:::-;3591:382:::0;:::o;1833:109::-;1879:63;1833:109;:::o;1299:196::-;1486:1;;1299:196::o;2811:113::-;2869:7;2896:20;:18;:20::i;1949:75::-;1986:38;1949:75;:::o;3981:405::-;2422:10;2402:16;:14;:16::i;:::-;-1:-1:-1;;;;;2402:30:0;;2394:52;;;;;-1:-1:-1;;;2394:52:0;;;;;;;;;;;;-1:-1:-1;;;2394:52:0;;;;;;;;;;;;;;;4117:33:::1;4138:11;4117:20;:33::i;:::-;4224:12;4238:23;4273:4;-1:-1:-1::0;;;;;4265:18:0::1;4305:9;4326:4;4265:66;;;;;;;;;;;;;;;;;;;::::0;;;;-1:-1:-1;;4265:66:0;;;;::::1;::::0;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4223:108;;;;4350:7;4366:10;4342:36;;;;;-1:-1:-1::0;;;4342:36:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2457:1;;3981:405:::0;;:::o;3175:232::-;2422:10;2402:16;:14;:16::i;:::-;-1:-1:-1;;;;;2402:30:0;;2394:52;;;;;-1:-1:-1;;;2394:52:0;;;;;;;;;;;;-1:-1:-1;;;2394:52:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;3266:22:0;::::1;3258:47;;;::::0;;-1:-1:-1;;;3258:47:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;3258:47:0;;;;;;;;;;;;;::::1;;3321:44;3338:8;3348:16;:14;:16::i;:::-;3321:44;;;;-1:-1:-1::0;;;;;3321:44:0::1;;;;;;-1:-1:-1::0;;;;;3321:44:0::1;;;;;;;;;;;;;;;;3376:23;3390:8;3376:13;:23::i;2578:225::-:0;1986:38;2746:15;2578:225;:::o;4589:274::-;4649:4;-1:-1:-1;;;;;4670:21:0;;4666:66;;-1:-1:-1;4715:5:0;4708:12;;4666:66;-1:-1:-1;4799:20:0;;4847:8;;4589:274;;;;:::o;4394:187::-;1879:63;4534:29;4519:55::o;3415:168::-;1986:38;3539:26;3524:52::o

Swarm Source

ipfs://696f7ae6f368606e2fb937629b8621028df4794f0d256c4f4b869fbe6350edcb
Loading