ETH Price: $3,384.79 (-2.15%)
Gas: 5 Gwei

Contract

0x2cb53871c01e314343DDdc4a0e7cCD30Df72B7d5
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00
Transaction Hash
Method
Block
From
To
Set Calculations132812452021-09-23 9:42:001035 days ago1632390120IN
0x2cb53871...0Df72B7d5
0 ETH0.0068403159.58777412
Add Token Aliase...132812432021-09-23 9:41:461035 days ago1632390106IN
0x2cb53871...0Df72B7d5
0 ETH0.0029436959.58777412
0x60806040132812372021-09-23 9:39:571035 days ago1632389997IN
 Create: Oracle
0 ETH0.0481689757.86118313

Advanced mode:
Parent Transaction Hash Block From To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Oracle

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

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

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

pragma solidity ^0.6.12;
pragma experimental ABIEncoderV2;




interface IERC20 {
     function decimals() external view returns (uint8);
}

// Part: OpenZeppelin/[email protected]/Context

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract Oracle is Ownable {
    address[] private _calculations;
    address public usdcAddress;
    mapping(address => address) public tokenAliases;

    event TokenAliasAdded(address tokenAddress, address tokenAliasAddress);
    event TokenAliasRemoved(address tokenAddress);

    struct TokenAlias {
        address tokenAddress;
        address tokenAliasAddress;
    }

    constructor(address _usdcAddress) public 
    {
        usdcAddress = _usdcAddress;
    }

    function setCalculations(address[] memory calculationAddresses)
        external
        onlyOwner
    {
        _calculations = calculationAddresses;
    }

    function calculations() external view returns (address[] memory) {
        return (_calculations);
    }

    function addTokenAlias(address tokenAddress, address tokenAliasAddress)
        public
        onlyOwner
    {
        tokenAliases[tokenAddress] = tokenAliasAddress;
        emit TokenAliasAdded(tokenAddress, tokenAliasAddress);
    }

    function addTokenAliases(TokenAlias[] memory _tokenAliases)
        public
        onlyOwner
    {
        for (uint256 i = 0; i < _tokenAliases.length; i++) {
            addTokenAlias(
                _tokenAliases[i].tokenAddress,
                _tokenAliases[i].tokenAliasAddress
            );
        }
    }

    function removeTokenAlias(address tokenAddress) public onlyOwner {
        delete tokenAliases[tokenAddress];
        emit TokenAliasRemoved(tokenAddress);
    }

    function getNormalizedValueUsdc(
        address tokenAddress,
        uint256 amount,
        uint256 priceUsdc
    ) public view returns (uint256) {
        IERC20 token = IERC20(tokenAddress);
        uint256 tokenDecimals = token.decimals();

        uint256 usdcDecimals = 6;
        uint256 decimalsAdjustment;
        if (tokenDecimals >= usdcDecimals) {
            decimalsAdjustment = tokenDecimals - usdcDecimals;
        } else {
            decimalsAdjustment = usdcDecimals - tokenDecimals;
        }
        uint256 value;
        if (decimalsAdjustment > 0) {
            value =
                (amount * priceUsdc * (10**decimalsAdjustment)) /
                10**(decimalsAdjustment + tokenDecimals);
        } else {
            value = (amount * priceUsdc) / 10**usdcDecimals;
        }
        return value;
    }

    function getNormalizedValueUsdc(address tokenAddress, uint256 amount)
        external
        view
        returns (uint256)
    {
        uint256 priceUsdc = getPriceUsdcRecommended(tokenAddress);
        return getNormalizedValueUsdc(tokenAddress, amount, priceUsdc);
    }

    function getPriceUsdcRecommended(address tokenAddress)
        public
        view
        returns (uint256)
    {
        address tokenAddressAlias = tokenAliases[tokenAddress];
        address tokenToQuery = tokenAddress;
        if (tokenAddressAlias != address(0)) {
            tokenToQuery = tokenAddressAlias;
        }
        (bool success, bytes memory data) =
            address(this).staticcall(
                abi.encodeWithSignature("getPriceUsdc(address)", tokenToQuery)
            );
        if (success) {
            return abi.decode(data, (uint256));
        }
        return 0;
    }

    fallback() external {
        for (uint256 i = 0; i < _calculations.length; i++) {
            address calculation = _calculations[i];
            assembly {
                let _target := calculation
                calldatacopy(0, 0, calldatasize())
                let success := staticcall(
                    gas(),
                    _target,
                    0,
                    calldatasize(),
                    0,
                    0
                )
                returndatacopy(0, 0, returndatasize())
                if success {
                    return(0, returndatasize())
                }
            }
        }
        revert("Oracle: Fallback proxy failed to return data");
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_usdcAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":false,"internalType":"address","name":"tokenAliasAddress","type":"address"}],"name":"TokenAliasAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"tokenAddress","type":"address"}],"name":"TokenAliasRemoved","type":"event"},{"stateMutability":"nonpayable","type":"fallback"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"tokenAliasAddress","type":"address"}],"name":"addTokenAlias","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"tokenAliasAddress","type":"address"}],"internalType":"struct Oracle.TokenAlias[]","name":"_tokenAliases","type":"tuple[]"}],"name":"addTokenAliases","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"calculations","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getNormalizedValueUsdc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"priceUsdc","type":"uint256"}],"name":"getNormalizedValueUsdc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"getPriceUsdcRecommended","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"removeTokenAlias","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"calculationAddresses","type":"address[]"}],"name":"setCalculations","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokenAliases","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"usdcAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b50604051610e1b380380610e1b83398101604081905261002f916100ac565b60006100396100a8565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600280546001600160a01b0319166001600160a01b03929092169190911790556100da565b3390565b6000602082840312156100bd578081fd5b81516001600160a01b03811681146100d3578182fd5b9392505050565b610d32806100e96000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063715018a61161008c5780638da5cb5b116100665780638da5cb5b1461020a578063d02d20aa14610212578063f2fde38b14610225578063f3ae307714610238576100cf565b8063715018a6146101dc57806388dea52a146101e45780638a7f6680146101f7576100cf565b806302d454571461014e578063255aacf11461016c5780633d71473b1461018157806341394ced14610196578063482ba306146101a95780636a4cb36c146101c9575b60005b60015481101561012c576000600182815481106100eb57fe5b60009182526020822001546001600160a01b03169150819036908037600080366000845afa90503d6000803e8015610122573d6000f35b50506001016100d2565b5060405162461bcd60e51b815260040161014590610c13565b60405180910390fd5b61015661024b565b6040516101639190610b52565b60405180910390f35b61017f61017a3660046109a5565b61025a565b005b6101896102a6565b6040516101639190610b80565b6101566101a43660046108f2565b610308565b6101bc6101b73660046108f2565b610323565b6040516101639190610c94565b61017f6101d7366004610914565b610416565b61017f6104b8565b61017f6101f2366004610a42565b610537565b6101bc610205366004610948565b6105b8565b6101566105db565b6101bc610220366004610972565b6105ea565b61017f6102333660046108f2565b6106c4565b61017f6102463660046108f2565b61077a565b6002546001600160a01b031681565b610262610810565b6000546001600160a01b0390811691161461028f5760405162461bcd60e51b815260040161014590610c5f565b80516102a2906001906020840190610814565b5050565b606060018054806020026020016040519081016040528092919081815260200182805480156102fe57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102e0575b5050505050905090565b6003602052600090815260409020546001600160a01b031681565b6001600160a01b0380821660009081526003602052604081205490911682811561034a5750805b60006060306001600160a01b0316836040516024016103699190610b52565b60408051601f198184030181529181526020820180516001600160e01b031663d61a784760e01b1790525161039e9190610b19565b600060405180830381855afa9150503d80600081146103d9576040519150601f19603f3d011682016040523d82523d6000602084013e6103de565b606091505b5091509150811561040857808060200190518101906103fd9190610ae0565b945050505050610411565b60009450505050505b919050565b61041e610810565b6000546001600160a01b0390811691161461044b5760405162461bcd60e51b815260040161014590610c5f565b6001600160a01b038281166000908152600360205260409081902080546001600160a01b03191692841692909217909155517fa98e06f16867476bbb2764587292fb84dbd09b5502001113bc12b8359cb954f1906104ac9084908490610b66565b60405180910390a15050565b6104c0610810565b6000546001600160a01b039081169116146104ed5760405162461bcd60e51b815260040161014590610c5f565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b61053f610810565b6000546001600160a01b0390811691161461056c5760405162461bcd60e51b815260040161014590610c5f565b60005b81518110156102a2576105b082828151811061058757fe5b60200260200101516000015183838151811061059f57fe5b602002602001015160200151610416565b60010161056f565b6000806105c484610323565b90506105d18484836105ea565b9150505b92915050565b6000546001600160a01b031690565b6000808490506000816001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561062b57600080fd5b505afa15801561063f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106639190610af8565b60ff1690506006600081831061067c5750808203610681565b508181035b600081156106a657838201600a0a82600a0a888a02028161069e57fe5b0490506106b8565b82600a0a878902816106b457fe5b0490505b98975050505050505050565b6106cc610810565b6000546001600160a01b039081169116146106f95760405162461bcd60e51b815260040161014590610c5f565b6001600160a01b03811661071f5760405162461bcd60e51b815260040161014590610bcd565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b610782610810565b6000546001600160a01b039081169116146107af5760405162461bcd60e51b815260040161014590610c5f565b6001600160a01b0381166000908152600360205260409081902080546001600160a01b0319169055517f1262aa3d0f0c652f1a55888d946c631f1a234f587d9e3e9f8ee39974b628fe7f90610805908390610b52565b60405180910390a150565b3390565b828054828255906000526020600020908101928215610869579160200282015b8281111561086957825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610834565b50610875929150610879565b5090565b5b808211156108755780546001600160a01b031916815560010161087a565b80356001600160a01b03811681146105d557600080fd5b6000604082840312156108c0578081fd5b6108ca6040610c9d565b905081356108d781610ce4565b815260208201356108e781610ce4565b602082015292915050565b600060208284031215610903578081fd5b61090d8383610898565b9392505050565b60008060408385031215610926578081fd5b6109308484610898565b915061093f8460208501610898565b90509250929050565b6000806040838503121561095a578182fd5b6109648484610898565b946020939093013593505050565b600080600060608486031215610986578081fd5b6109908585610898565b95602085013595506040909401359392505050565b600060208083850312156109b7578182fd5b823567ffffffffffffffff8111156109cd578283fd5b8301601f810185136109dd578283fd5b80356109f06109eb82610cc4565b610c9d565b8181528381019083850185840285018601891015610a0c578687fd5b8694505b83851015610a3657610a228982610898565b835260019490940193918501918501610a10565b50979650505050505050565b60006020808385031215610a54578182fd5b823567ffffffffffffffff811115610a6a578283fd5b8301601f81018513610a7a578283fd5b8035610a886109eb82610cc4565b818152838101908385016040808502860187018a1015610aa6578788fd5b8795505b84861015610ad257610abc8a836108af565b8452600195909501949286019290810190610aaa565b509098975050505050505050565b600060208284031215610af1578081fd5b5051919050565b600060208284031215610b09578081fd5b815160ff8116811461090d578182fd5b60008251815b81811015610b395760208186018101518583015201610b1f565b81811115610b475782828501525b509190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6020808252825182820181905260009190848201906040850190845b81811015610bc15783516001600160a01b031683529284019291840191600101610b9c565b50909695505050505050565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252602c908201527f4f7261636c653a2046616c6c6261636b2070726f7879206661696c656420746f60408201526b2072657475726e206461746160a01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b90815260200190565b60405181810167ffffffffffffffff81118282101715610cbc57600080fd5b604052919050565b600067ffffffffffffffff821115610cda578081fd5b5060209081020190565b6001600160a01b0381168114610cf957600080fd5b5056fea26469706673582212207123800eca0c464fb17769a9aabdce406f33d85a8db82a91a5a2861fbe9d731664736f6c634300060c0033000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063715018a61161008c5780638da5cb5b116100665780638da5cb5b1461020a578063d02d20aa14610212578063f2fde38b14610225578063f3ae307714610238576100cf565b8063715018a6146101dc57806388dea52a146101e45780638a7f6680146101f7576100cf565b806302d454571461014e578063255aacf11461016c5780633d71473b1461018157806341394ced14610196578063482ba306146101a95780636a4cb36c146101c9575b60005b60015481101561012c576000600182815481106100eb57fe5b60009182526020822001546001600160a01b03169150819036908037600080366000845afa90503d6000803e8015610122573d6000f35b50506001016100d2565b5060405162461bcd60e51b815260040161014590610c13565b60405180910390fd5b61015661024b565b6040516101639190610b52565b60405180910390f35b61017f61017a3660046109a5565b61025a565b005b6101896102a6565b6040516101639190610b80565b6101566101a43660046108f2565b610308565b6101bc6101b73660046108f2565b610323565b6040516101639190610c94565b61017f6101d7366004610914565b610416565b61017f6104b8565b61017f6101f2366004610a42565b610537565b6101bc610205366004610948565b6105b8565b6101566105db565b6101bc610220366004610972565b6105ea565b61017f6102333660046108f2565b6106c4565b61017f6102463660046108f2565b61077a565b6002546001600160a01b031681565b610262610810565b6000546001600160a01b0390811691161461028f5760405162461bcd60e51b815260040161014590610c5f565b80516102a2906001906020840190610814565b5050565b606060018054806020026020016040519081016040528092919081815260200182805480156102fe57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102e0575b5050505050905090565b6003602052600090815260409020546001600160a01b031681565b6001600160a01b0380821660009081526003602052604081205490911682811561034a5750805b60006060306001600160a01b0316836040516024016103699190610b52565b60408051601f198184030181529181526020820180516001600160e01b031663d61a784760e01b1790525161039e9190610b19565b600060405180830381855afa9150503d80600081146103d9576040519150601f19603f3d011682016040523d82523d6000602084013e6103de565b606091505b5091509150811561040857808060200190518101906103fd9190610ae0565b945050505050610411565b60009450505050505b919050565b61041e610810565b6000546001600160a01b0390811691161461044b5760405162461bcd60e51b815260040161014590610c5f565b6001600160a01b038281166000908152600360205260409081902080546001600160a01b03191692841692909217909155517fa98e06f16867476bbb2764587292fb84dbd09b5502001113bc12b8359cb954f1906104ac9084908490610b66565b60405180910390a15050565b6104c0610810565b6000546001600160a01b039081169116146104ed5760405162461bcd60e51b815260040161014590610c5f565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b61053f610810565b6000546001600160a01b0390811691161461056c5760405162461bcd60e51b815260040161014590610c5f565b60005b81518110156102a2576105b082828151811061058757fe5b60200260200101516000015183838151811061059f57fe5b602002602001015160200151610416565b60010161056f565b6000806105c484610323565b90506105d18484836105ea565b9150505b92915050565b6000546001600160a01b031690565b6000808490506000816001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561062b57600080fd5b505afa15801561063f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106639190610af8565b60ff1690506006600081831061067c5750808203610681565b508181035b600081156106a657838201600a0a82600a0a888a02028161069e57fe5b0490506106b8565b82600a0a878902816106b457fe5b0490505b98975050505050505050565b6106cc610810565b6000546001600160a01b039081169116146106f95760405162461bcd60e51b815260040161014590610c5f565b6001600160a01b03811661071f5760405162461bcd60e51b815260040161014590610bcd565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b610782610810565b6000546001600160a01b039081169116146107af5760405162461bcd60e51b815260040161014590610c5f565b6001600160a01b0381166000908152600360205260409081902080546001600160a01b0319169055517f1262aa3d0f0c652f1a55888d946c631f1a234f587d9e3e9f8ee39974b628fe7f90610805908390610b52565b60405180910390a150565b3390565b828054828255906000526020600020908101928215610869579160200282015b8281111561086957825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610834565b50610875929150610879565b5090565b5b808211156108755780546001600160a01b031916815560010161087a565b80356001600160a01b03811681146105d557600080fd5b6000604082840312156108c0578081fd5b6108ca6040610c9d565b905081356108d781610ce4565b815260208201356108e781610ce4565b602082015292915050565b600060208284031215610903578081fd5b61090d8383610898565b9392505050565b60008060408385031215610926578081fd5b6109308484610898565b915061093f8460208501610898565b90509250929050565b6000806040838503121561095a578182fd5b6109648484610898565b946020939093013593505050565b600080600060608486031215610986578081fd5b6109908585610898565b95602085013595506040909401359392505050565b600060208083850312156109b7578182fd5b823567ffffffffffffffff8111156109cd578283fd5b8301601f810185136109dd578283fd5b80356109f06109eb82610cc4565b610c9d565b8181528381019083850185840285018601891015610a0c578687fd5b8694505b83851015610a3657610a228982610898565b835260019490940193918501918501610a10565b50979650505050505050565b60006020808385031215610a54578182fd5b823567ffffffffffffffff811115610a6a578283fd5b8301601f81018513610a7a578283fd5b8035610a886109eb82610cc4565b818152838101908385016040808502860187018a1015610aa6578788fd5b8795505b84861015610ad257610abc8a836108af565b8452600195909501949286019290810190610aaa565b509098975050505050505050565b600060208284031215610af1578081fd5b5051919050565b600060208284031215610b09578081fd5b815160ff8116811461090d578182fd5b60008251815b81811015610b395760208186018101518583015201610b1f565b81811115610b475782828501525b509190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6020808252825182820181905260009190848201906040850190845b81811015610bc15783516001600160a01b031683529284019291840191600101610b9c565b50909695505050505050565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252602c908201527f4f7261636c653a2046616c6c6261636b2070726f7879206661696c656420746f60408201526b2072657475726e206461746160a01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b90815260200190565b60405181810167ffffffffffffffff81118282101715610cbc57600080fd5b604052919050565b600067ffffffffffffffff821115610cda578081fd5b5060209081020190565b6001600160a01b0381168114610cf957600080fd5b5056fea26469706673582212207123800eca0c464fb17769a9aabdce406f33d85a8db82a91a5a2861fbe9d731664736f6c634300060c0033

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

000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48

-----Decoded View---------------
Arg [0] : _usdcAddress (address): 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48

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


Deployed Bytecode Sourcemap

2108:4061:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5465:9;5460:634;5484:13;:20;5480:24;;5460:634;;;5526:19;5548:13;5562:1;5548:16;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5548:16:0;;-1:-1:-1;5548:16:0;;5670:14;;5548:16;5651:34;5894:1;5870;5833:14;5809:1;5779:7;5751:5;5718:196;5703:211;;5953:16;5950:1;5947;5932:38;5991:7;5988:2;;;6032:16;6029:1;6022:27;5988:2;-1:-1:-1;;5506:3:0;;5460:634;;;;6104:54;;-1:-1:-1;;;6104:54:0;;;;;;;:::i;:::-;;;;;;;;2180:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2601:161;;;;;;:::i;:::-;;:::i;:::-;;2770:106;;;:::i;:::-;;;;;;;:::i;2213:47::-;;;;;;:::i;:::-;;:::i;4796:625::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2884:241::-;;;;;;:::i;:::-;;:::i;1701:148::-;;;:::i;3133:325::-;;;;;;:::i;:::-;;:::i;4505:283::-;;;;;;:::i;:::-;;:::i;1487:79::-;;;:::i;3638:859::-;;;;;;:::i;:::-;;:::i;1857:244::-;;;;;;:::i;:::-;;:::i;3466:164::-;;;;;;:::i;:::-;;:::i;2180:26::-;;;-1:-1:-1;;;;;2180:26:0;;:::o;2601:161::-;1624:12;:10;:12::i;:::-;1614:6;;-1:-1:-1;;;;;1614:6:0;;;:22;;;1606:67;;;;-1:-1:-1;;;1606:67:0;;;;;;;:::i;:::-;2718:36;;::::1;::::0;:13:::1;::::0;:36:::1;::::0;::::1;::::0;::::1;:::i;:::-;;2601:161:::0;:::o;2770:106::-;2817:16;2854:13;2846:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2846:22:0;;;;;;;;;;;;;;;;;;;;;;;2770:106;:::o;2213:47::-;;;;;;;;;;;;-1:-1:-1;;;;;2213:47:0;;:::o;4796:625::-;-1:-1:-1;;;;;4952:26:0;;;4899:7;4952:26;;;:12;:26;;;;;;4899:7;;4952:26;4965:12;5039:31;;5035:96;;-1:-1:-1;5102:17:0;5035:96;5142:12;5156:17;5198:4;-1:-1:-1;;;;;5190:24:0;5282:12;5233:62;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5233:62:0;;;;;;;;;;;;;;-1:-1:-1;;;;;5233:62:0;-1:-1:-1;;;5233:62:0;;;5190:120;;;5233:62;5190:120;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5141:169;;;;5325:7;5321:74;;;5367:4;5356:27;;;;;;;;;;;;:::i;:::-;5349:34;;;;;;;;5321:74;5412:1;5405:8;;;;;;4796:625;;;;:::o;2884:241::-;1624:12;:10;:12::i;:::-;1614:6;;-1:-1:-1;;;;;1614:6:0;;;:22;;;1606:67;;;;-1:-1:-1;;;1606:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3007:26:0;;::::1;;::::0;;;:12:::1;:26;::::0;;;;;;:46;;-1:-1:-1;;;;;;3007:46:0::1;::::0;;::::1;::::0;;;::::1;::::0;;;3069:48;::::1;::::0;::::1;::::0;3007:26;;:46;;3069:48:::1;:::i;:::-;;;;;;;;2884:241:::0;;:::o;1701:148::-;1624:12;:10;:12::i;:::-;1614:6;;-1:-1:-1;;;;;1614:6:0;;;:22;;;1606:67;;;;-1:-1:-1;;;1606:67:0;;;;;;;:::i;:::-;1808:1:::1;1792:6:::0;;1771:40:::1;::::0;-1:-1:-1;;;;;1792:6:0;;::::1;::::0;1771:40:::1;::::0;1808:1;;1771:40:::1;1839:1;1822:19:::0;;-1:-1:-1;;;;;;1822:19:0::1;::::0;;1701:148::o;3133:325::-;1624:12;:10;:12::i;:::-;1614:6;;-1:-1:-1;;;;;1614:6:0;;;:22;;;1606:67;;;;-1:-1:-1;;;1606:67:0;;;;;;;:::i;:::-;3249:9:::1;3244:207;3268:13;:20;3264:1;:24;3244:207;;;3310:129;3342:13;3356:1;3342:16;;;;;;;;;;;;;;:29;;;3390:13;3404:1;3390:16;;;;;;;;;;;;;;:34;;;3310:13;:129::i;:::-;3290:3;;3244:207;;4505:283:::0;4625:7;4650:17;4670:37;4694:12;4670:23;:37::i;:::-;4650:57;;4725:55;4748:12;4762:6;4770:9;4725:22;:55::i;:::-;4718:62;;;4505:283;;;;;:::o;1487:79::-;1525:7;1552:6;-1:-1:-1;;;;;1552:6:0;1487:79;:::o;3638:859::-;3782:7;3802:12;3824;3802:35;;3848:21;3872:5;-1:-1:-1;;;;;3872:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3848:40;;;-1:-1:-1;3924:1:0;3901:20;3977:29;;;3973:193;;-1:-1:-1;4044:28:0;;;3973:193;;;-1:-1:-1;4126:28:0;;;3973:193;4176:13;4204:22;;4200:267;;4361:13;4340:18;:34;4335:2;:40;4295:18;4291:2;:22;4278:9;4269:6;:18;:45;4268:107;;;;;;4243:132;;4200:267;;;4443:12;4439:2;:16;4426:9;4417:6;:18;4416:39;;;;;;4408:47;;4200:267;4484:5;3638:859;-1:-1:-1;;;;;;;;3638:859:0:o;1857:244::-;1624:12;:10;:12::i;:::-;1614:6;;-1:-1:-1;;;;;1614:6:0;;;:22;;;1606:67;;;;-1:-1:-1;;;1606:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1946:22:0;::::1;1938:73;;;;-1:-1:-1::0;;;1938:73:0::1;;;;;;;:::i;:::-;2048:6;::::0;;2027:38:::1;::::0;-1:-1:-1;;;;;2027:38:0;;::::1;::::0;2048:6;::::1;::::0;2027:38:::1;::::0;::::1;2076:6;:17:::0;;-1:-1:-1;;;;;;2076:17:0::1;-1:-1:-1::0;;;;;2076:17:0;;;::::1;::::0;;;::::1;::::0;;1857:244::o;3466:164::-;1624:12;:10;:12::i;:::-;1614:6;;-1:-1:-1;;;;;1614:6:0;;;:22;;;1606:67;;;;-1:-1:-1;;;1606:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3549:26:0;::::1;;::::0;;;:12:::1;:26;::::0;;;;;;3542:33;;-1:-1:-1;;;;;;3542:33:0::1;::::0;;3591:31;::::1;::::0;::::1;::::0;3562:12;;3591:31:::1;:::i;:::-;;;;;;;;3466:164:::0;:::o;804:106::-;892:10;804:106;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;5:130;72:20;;-1:-1;;;;;13089:54;;13658:35;;13648:2;;13707:1;;13697:12;1737:490;;1853:4;1841:9;1836:3;1832:19;1828:30;1825:2;;;-1:-1;;1861:12;1825:2;1889:20;1853:4;1889:20;:::i;:::-;1880:29;;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1974:75;;2123:2;2177:22;;72:20;97:33;72:20;97:33;:::i;:::-;2123:2;2138:16;;2131:75;2142:5;1819:408;-1:-1;;1819:408::o;2649:241::-;;2753:2;2741:9;2732:7;2728:23;2724:32;2721:2;;;-1:-1;;2759:12;2721:2;2821:53;2866:7;2842:22;2821:53;:::i;:::-;2811:63;2715:175;-1:-1;;;2715:175::o;2897:366::-;;;3018:2;3006:9;2997:7;2993:23;2989:32;2986:2;;;-1:-1;;3024:12;2986:2;3086:53;3131:7;3107:22;3086:53;:::i;:::-;3076:63;;3194:53;3239:7;3176:2;3219:9;3215:22;3194:53;:::i;:::-;3184:63;;2980:283;;;;;:::o;3270:366::-;;;3391:2;3379:9;3370:7;3366:23;3362:32;3359:2;;;-1:-1;;3397:12;3359:2;3459:53;3504:7;3480:22;3459:53;:::i;:::-;3449:63;3549:2;3588:22;;;;2301:20;;-1:-1;;;3353:283::o;3643:491::-;;;;3781:2;3769:9;3760:7;3756:23;3752:32;3749:2;;;-1:-1;;3787:12;3749:2;3849:53;3894:7;3870:22;3849:53;:::i;:::-;3839:63;3939:2;3978:22;;2301:20;;-1:-1;4047:2;4086:22;;;2301:20;;3743:391;-1:-1;;;3743:391::o;4141:377::-;;4270:2;;4258:9;4249:7;4245:23;4241:32;4238:2;;;-1:-1;;4276:12;4238:2;4334:17;4321:31;4372:18;4364:6;4361:30;4358:2;;;-1:-1;;4394:12;4358:2;4470:22;;270:4;258:17;;254:27;-1:-1;244:2;;-1:-1;;285:12;244:2;332:6;319:20;354:80;369:64;426:6;369:64;:::i;:::-;354:80;:::i;:::-;462:21;;;519:14;;;;494:17;;;608;;;599:27;;;;596:36;-1:-1;593:2;;;-1:-1;;635:12;593:2;-1:-1;661:10;;655:206;680:6;677:1;674:13;655:206;;;760:37;793:3;781:10;760:37;:::i;:::-;748:50;;702:1;695:9;;;;;812:14;;;;840;;655:206;;;-1:-1;4414:88;4232:286;-1:-1;;;;;;;4232:286::o;4525:431::-;;4681:2;;4669:9;4660:7;4656:23;4652:32;4649:2;;;-1:-1;;4687:12;4649:2;4745:17;4732:31;4783:18;4775:6;4772:30;4769:2;;;-1:-1;;4805:12;4769:2;4908:22;;1047:4;1035:17;;1031:27;-1:-1;1021:2;;-1:-1;;1062:12;1021:2;1109:6;1096:20;1131:107;1146:91;1230:6;1146:91;:::i;1131:107::-;1266:21;;;1323:14;;;;1298:17;;;1424:4;1412:17;;;1403:27;;;;1400:36;-1:-1;1397:2;;;-1:-1;;1439:12;1397:2;-1:-1;1465:10;;1459:233;1484:6;1481:1;1478:13;1459:233;;;1564:64;1624:3;1612:10;1564:64;:::i;:::-;1552:77;;1506:1;1499:9;;;;;1643:14;;;;1671;;;;1459:233;;;-1:-1;4825:115;;4643:313;-1:-1;;;;;;;;4643:313::o;4963:263::-;;5078:2;5066:9;5057:7;5053:23;5049:32;5046:2;;;-1:-1;;5084:12;5046:2;-1:-1;2449:13;;5040:186;-1:-1;5040:186::o;5233:259::-;;5346:2;5334:9;5325:7;5321:23;5317:32;5314:2;;;-1:-1;;5352:12;5314:2;2594:6;2588:13;13305:4;13930:5;13294:16;13907:5;13904:33;13894:2;;-1:-1;;13941:12;8238:271;;6800:5;12133:12;-1:-1;13395:101;13409:6;13406:1;13403:13;13395:101;;;6944:4;13476:11;;;;;13470:18;13457:11;;;13450:39;13424:10;13395:101;;;13511:6;13508:1;13505:13;13502:2;;;-1:-1;13567:6;13562:3;13558:16;13551:27;13502:2;-1:-1;6975:16;;;;;8372:137;-1:-1;;8372:137::o;8516:222::-;-1:-1;;;;;13089:54;;;;5742:37;;8643:2;8628:18;;8614:124::o;8745:333::-;-1:-1;;;;;13089:54;;;5742:37;;13089:54;;9064:2;9049:18;;5742:37;8900:2;8885:18;;8871:207::o;9085:370::-;9262:2;9276:47;;;12133:12;;9247:18;;;12536:19;;;9085:370;;9262:2;11987:14;;;;12576;;;;9085:370;6350:260;6375:6;6372:1;6369:13;6350:260;;;6436:13;;-1:-1;;;;;13089:54;5742:37;;12391:14;;;;5653;;;;13100:42;6390:9;6350:260;;;-1:-1;9329:116;;9233:222;-1:-1;;;;;;9233:222::o;9462:416::-;9662:2;9676:47;;;7228:2;9647:18;;;12536:19;7264:34;12576:14;;;7244:55;-1:-1;;;7319:12;;;7312:30;7361:12;;;9633:245::o;9885:416::-;10085:2;10099:47;;;7612:2;10070:18;;;12536:19;7648:34;12576:14;;;7628:55;-1:-1;;;7703:12;;;7696:36;7751:12;;;10056:245::o;10308:416::-;10508:2;10522:47;;;10493:18;;;12536:19;8038:34;12576:14;;;8018:55;8092:12;;;10479:245::o;10731:222::-;8189:37;;;10858:2;10843:18;;10829:124::o;10960:256::-;11022:2;11016:9;11048:17;;;11123:18;11108:34;;11144:22;;;11105:62;11102:2;;;11180:1;;11170:12;11102:2;11022;11189:22;11000:216;;-1:-1;11000:216::o;11223:304::-;;11382:18;11374:6;11371:30;11368:2;;;-1:-1;;11404:12;11368:2;-1:-1;11449:4;11437:17;;;11502:15;;11305:222::o;13599:117::-;-1:-1;;;;;13089:54;;13658:35;;13648:2;;13707:1;;13697:12;13648:2;13642:74;:::o

Swarm Source

ipfs://7123800eca0c464fb17769a9aabdce406f33d85a8db82a91a5a2861fbe9d7316

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.