Goerli Testnet

Contract

0x214c60045e8d1D79c1Cb5C8053EcB27393DC4C78

Overview

ETH Balance

Token Holdings

Multichain Info

N/A
Transaction Hash
Method
Block
From
To
Value
Set Fixed Price81050402022-12-09 16:26:36474 days ago1670603196IN
0x214c6004...393DC4C78
0 ETH0.000046651.00634719
Set Fixed Price81050122022-12-09 16:20:12474 days ago1670602812IN
0x214c6004...393DC4C78
0 ETH0.000024471.00573164
Set Fixed Price81049852022-12-09 16:14:00474 days ago1670602440IN
0x214c6004...393DC4C78
0 ETH0.000029491.00921478
Claim Operator81049782022-12-09 16:12:00474 days ago1670602320IN
0x214c6004...393DC4C78
0 ETH0.000028041.00655237
Set Pending Oper...81049622022-12-09 16:08:36474 days ago1670602116IN
0x214c6004...393DC4C78
0 ETH0.000029241.01051071
Set Fixed Price81049502022-12-09 16:05:36474 days ago1670601936IN
0x214c6004...393DC4C78
0 ETH0.000046781.01069076
Set Fixed Price81046182022-12-09 14:46:36474 days ago1670597196IN
0x214c6004...393DC4C78
0 ETH0.000025281.03929105
Set Fixed Price81046092022-12-09 14:44:12474 days ago1670597052IN
0x214c6004...393DC4C78
0 ETH0.000025291.03964497
Set Fixed Price81045532022-12-09 14:31:12474 days ago1670596272IN
0x214c6004...393DC4C78
0 ETH0.000030361.03903095
Set Fixed Price81045292022-12-09 14:24:48474 days ago1670595888IN
0x214c6004...393DC4C78
0 ETH0.000030461.0428533
Set Fixed Price81045102022-12-09 14:20:24474 days ago1670595624IN
0x214c6004...393DC4C78
0 ETH0.000047571.02790482
Set Fixed Price81043292022-12-09 13:37:48474 days ago1670593068IN
0x214c6004...393DC4C78
0 ETH0.000049421.0670916
Set Pending Oper...81037572022-12-09 11:21:48475 days ago1670584908IN
0x214c6004...393DC4C78
0 ETH0.000046831.01733766
Set Feed80974022022-12-08 10:33:24476 days ago1670495604IN
0x214c6004...393DC4C78
0 ETH0.000047351.00773002
Set Feed80903682022-12-07 7:25:00477 days ago1670397900IN
0x214c6004...393DC4C78
0 ETH0.000000020.00046853
0x6080604080902972022-12-07 7:07:12477 days ago1670396832IN
 Create: Oracle
0 ETH0.000000040.00006103

Latest 25 internal transactions (View All)

Advanced mode:
Parent Txn Hash Block From To Value
81392862022-12-15 11:36:48469 days ago1671104208
0x214c6004...393DC4C78
0 ETH
81392862022-12-15 11:36:48469 days ago1671104208
0x214c6004...393DC4C78
0 ETH
81392862022-12-15 11:36:48469 days ago1671104208
0x214c6004...393DC4C78
0 ETH
81392792022-12-15 11:35:00469 days ago1671104100
0x214c6004...393DC4C78
0 ETH
81392792022-12-15 11:35:00469 days ago1671104100
0x214c6004...393DC4C78
0 ETH
81392792022-12-15 11:35:00469 days ago1671104100
0x214c6004...393DC4C78
0 ETH
81392722022-12-15 11:33:12469 days ago1671103992
0x214c6004...393DC4C78
0 ETH
81392722022-12-15 11:33:12469 days ago1671103992
0x214c6004...393DC4C78
0 ETH
81392722022-12-15 11:33:12469 days ago1671103992
0x214c6004...393DC4C78
0 ETH
81392652022-12-15 11:31:36469 days ago1671103896
0x214c6004...393DC4C78
0 ETH
81392652022-12-15 11:31:36469 days ago1671103896
0x214c6004...393DC4C78
0 ETH
81392652022-12-15 11:31:36469 days ago1671103896
0x214c6004...393DC4C78
0 ETH
81392522022-12-15 11:28:36469 days ago1671103716
0x214c6004...393DC4C78
0 ETH
81392522022-12-15 11:28:36469 days ago1671103716
0x214c6004...393DC4C78
0 ETH
81392522022-12-15 11:28:36469 days ago1671103716
0x214c6004...393DC4C78
0 ETH
81392362022-12-15 11:24:36469 days ago1671103476
0x214c6004...393DC4C78
0 ETH
81392362022-12-15 11:24:36469 days ago1671103476
0x214c6004...393DC4C78
0 ETH
81392362022-12-15 11:24:36469 days ago1671103476
0x214c6004...393DC4C78
0 ETH
81392292022-12-15 11:22:36469 days ago1671103356
0x214c6004...393DC4C78
0 ETH
81392292022-12-15 11:22:36469 days ago1671103356
0x214c6004...393DC4C78
0 ETH
81392292022-12-15 11:22:36469 days ago1671103356
0x214c6004...393DC4C78
0 ETH
81335322022-12-14 12:49:00469 days ago1671022140
0x214c6004...393DC4C78
0 ETH
81335322022-12-14 12:49:00469 days ago1671022140
0x214c6004...393DC4C78
0 ETH
81335322022-12-14 12:49:00469 days ago1671022140
0x214c6004...393DC4C78
0 ETH
81330812022-12-14 11:00:00470 days ago1671015600
0x214c6004...393DC4C78
0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Oracle

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2022-12-07
*/

// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;

interface IChainlinkFeed {
    function decimals() external view returns (uint8);
    function latestAnswer() external view returns (uint);
}

/**
@title Oracle
@notice Oracle used by markets. Can use both fixed price feeds and Chainlink-style feeds for prices.
The Pessimistic Oracle introduces collateral factor into the pricing formula. It ensures that any given oracle price is dampened to prevent borrowers from borrowing more than the lowest recorded value of their collateral over the past 2 days.
This has the advantage of making price manipulation attacks more difficult, as an attacker needs to log artificially high lows.
It has the disadvantage of reducing borrow power of borrowers to a 2-day minimum value of their collateral, where the value must have been seen by the oracle.
*/
contract Oracle {

    struct FeedData {
        IChainlinkFeed feed;
        uint8 tokenDecimals;
    }

    address public operator;
    address public pendingOperator;
    mapping (address => FeedData) public feeds;
    mapping (address => uint) public fixedPrices;
    mapping (address => mapping(uint => uint)) public dailyLows; // token => day => price

    constructor(
        address _operator
    ) {
        operator = _operator;
    }

    modifier onlyOperator {
        require(msg.sender == operator, "ONLY OPERATOR");
        _;
    }
    
    /**
    @notice Sets the pending operator of the oracle. Only callable by operator.
    @param newOperator_ The address of the pending operator.
    */
    function setPendingOperator(address newOperator_) public onlyOperator { pendingOperator = newOperator_; }

    /**
    @notice Sets the price feed of a specific token address.
    @dev Even though the price feeds implement the chainlink interface, it's possible to use other price oracle.
    @param token Address of the ERC20 token to set a feed for
    @param feed The chainlink feed of the ERC20 token.
    @param tokenDecimals uint8 representing the decimal precision of the token
    */
    function setFeed(address token, IChainlinkFeed feed, uint8 tokenDecimals) public onlyOperator { feeds[token] = FeedData(feed, tokenDecimals); }

    /**
    @notice Sets a fixed price for a token
    @dev Be careful when setting this. Assuming a fixed price where one doesn't exist can have disastrous consequences.
    @param token The address of the fixed price token
    @param price The fixed price of the token. Remember to account for decimal precision when setting this.
    */
    function setFixedPrice(address token, uint price) public onlyOperator { fixedPrices[token] = price; }

    /**
    @notice Claims the operator role. Only successfully callable by the pending operator.
    */
    function claimOperator() public {
        require(msg.sender == pendingOperator, "ONLY PENDING OPERATOR");
        operator = pendingOperator;
        pendingOperator = address(0);
        emit ChangeOperator(operator);
    }

    /**
    @notice Gets the price of a specific token in DOLA
    @param token The address of the token to get price of
    @return The price of the token in DOLA, adjusted for token and feed decimals
    */
    function viewPrice(address token, uint collateralFactorBps) external view returns (uint) {
        if(fixedPrices[token] > 0) return fixedPrices[token];
        if(feeds[token].feed != IChainlinkFeed(address(0))) {
            //get normalized price
            uint normalizedPrice = getNormalizedPrice(token);
            uint day = block.timestamp / 1 days;
            // get today's low
            uint todaysLow = dailyLows[token][day];
            if(todaysLow == 0 || normalizedPrice < todaysLow) {
                todaysLow = normalizedPrice;
            }
            // get yesterday's low
            uint yesterdaysLow = dailyLows[token][day - 1];
            // calculate new borrowing power based on collateral factor
            uint newBorrowingPower = normalizedPrice * collateralFactorBps / 10000;
            uint twoDayLow = todaysLow > yesterdaysLow && yesterdaysLow > 0 ? yesterdaysLow : todaysLow;
            if(twoDayLow > 0 && newBorrowingPower > twoDayLow) {
                uint dampenedPrice = twoDayLow * 10000 / collateralFactorBps;
                return dampenedPrice < normalizedPrice ? dampenedPrice: normalizedPrice;
            }
            return normalizedPrice;

        }
        revert("Price not found");
    }

    /**
    @notice Gets the price of a specific token in DOLA while also saving the price if it is the day's lowest.
    @param token The address of the token to get price of
    @return The price of the token in DOLA, adjusted for token and feed decimals
    */
    function getPrice(address token, uint collateralFactorBps) external returns (uint) {
        if(fixedPrices[token] > 0) return fixedPrices[token];
        if(feeds[token].feed != IChainlinkFeed(address(0))) {
            // get normalized price
            uint normalizedPrice = getNormalizedPrice(token);
            // potentially store price as today's low
            uint day = block.timestamp / 1 days;
            uint todaysLow = dailyLows[token][day];
            if(todaysLow == 0 || normalizedPrice < todaysLow) {
                dailyLows[token][day] = normalizedPrice;
                todaysLow = normalizedPrice;
                emit RecordDailyLow(token, normalizedPrice);
            }
            // get yesterday's low
            uint yesterdaysLow = dailyLows[token][day - 1];
            // calculate new borrowing power based on collateral factor
            uint newBorrowingPower = normalizedPrice * collateralFactorBps / 10000;
            uint twoDayLow = todaysLow > yesterdaysLow && yesterdaysLow > 0 ? yesterdaysLow : todaysLow;
            if(twoDayLow > 0 && newBorrowingPower > twoDayLow) {
                uint dampenedPrice = twoDayLow * 10000 / collateralFactorBps;
                return dampenedPrice < normalizedPrice ? dampenedPrice: normalizedPrice;
            }
            return normalizedPrice;

        }
        revert("Price not found");
    }
    
    /**
    @notice Gets the price from the price feed and normalizes it.
    @param token The token to get the normalized price for.
    @return normalizedPrice Returns the normalized price.
    */
    function getNormalizedPrice(address token) internal view returns (uint normalizedPrice) {
        //get price from feed
        uint price = feeds[token].feed.latestAnswer();
        require(price > 0, "Invalid feed price");
        // normalize price
        uint8 feedDecimals = feeds[token].feed.decimals();
        uint8 tokenDecimals = feeds[token].tokenDecimals;
        if(feedDecimals + tokenDecimals <= 36) {
            uint8 decimals = 36 - feedDecimals - tokenDecimals;
            normalizedPrice = price * (10 ** decimals);
        } else {
            uint8 decimals = feedDecimals + tokenDecimals - 36;
            normalizedPrice = price / 10 ** decimals;
        }

    }

    event ChangeOperator(address indexed newOperator);
    event RecordDailyLow(address indexed token, uint price);

}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_operator","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newOperator","type":"address"}],"name":"ChangeOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"RecordDailyLow","type":"event"},{"inputs":[],"name":"claimOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"dailyLows","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"feeds","outputs":[{"internalType":"contract IChainlinkFeed","name":"feed","type":"address"},{"internalType":"uint8","name":"tokenDecimals","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"fixedPrices","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"collateralFactorBps","type":"uint256"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOperator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"contract IChainlinkFeed","name":"feed","type":"address"},{"internalType":"uint8","name":"tokenDecimals","type":"uint8"}],"name":"setFeed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"}],"name":"setFixedPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOperator_","type":"address"}],"name":"setPendingOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"collateralFactorBps","type":"uint256"}],"name":"viewPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b50604051610c34380380610c3483398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610ba1806100936000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806370c4c23f1161007157806370c4c23f1461017d578063949c4fa3146101a8578063ac7e534e146101bb578063ae10561b146101ce578063d54e65fb146101e1578063e983fe25146101e957600080fd5b8063143d4e49146100ae5780631badc89a146100c35780632fba4aa9146100d6578063449e815d14610131578063570ca73514610152575b600080fd5b6100c16100bc3660046108bb565b610209565b005b6100c16100d13660046108df565b61025e565b61010b6100e43660046108bb565b6002602052600090815260409020546001600160a01b03811690600160a01b900460ff1682565b604080516001600160a01b03909316835260ff9091166020830152015b60405180910390f35b61014461013f3660046108df565b6102a4565b604051908152602001610128565b600054610165906001600160a01b031681565b6040516001600160a01b039091168152602001610128565b61014461018b3660046108df565b600460209081526000928352604080842090915290825290205481565b6101446101b63660046108df565b6104bc565b600154610165906001600160a01b031681565b6100c16101dc36600461091a565b610593565b6100c1610616565b6101446101f73660046108bb565b60036020526000908152604090205481565b6000546001600160a01b0316331461023c5760405162461bcd60e51b815260040161023390610965565b60405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146102885760405162461bcd60e51b815260040161023390610965565b6001600160a01b03909116600090815260036020526040902055565b6001600160a01b038216600090815260036020526040812054156102e157506001600160a01b0382166000908152600360205260409020546104b6565b6001600160a01b03838116600090815260026020526040902054161561047c57600061030c846106b9565b9050600061031d62015180426109a2565b6001600160a01b038616600090815260046020908152604080832084845290915290205490915080158061035057508083105b156103b157506001600160a01b038516600081815260046020908152604080832085845282529182902085905590518481528492917fbbf79d525adf40b05f7e2779ec9f3bc352803dc6f9a7ab4512fbde7120d67597910160405180910390a25b6001600160a01b0386166000908152600460205260408120816103d56001866109c4565b8152602001908152602001600020549050600061271087866103f791906109db565b61040191906109a2565b9050600082841180156104145750600083115b61041e5783610420565b825b905060008111801561043157508082115b1561046e57600088610445836127106109db565b61044f91906109a2565b905086811061045e5786610460565b805b9750505050505050506104b6565b8596505050505050506104b6565b60405162461bcd60e51b815260206004820152600f60248201526e141c9a58d9481b9bdd08199bdd5b99608a1b6044820152606401610233565b92915050565b6001600160a01b038216600090815260036020526040812054156104f957506001600160a01b0382166000908152600360205260409020546104b6565b6001600160a01b03838116600090815260026020526040902054161561047c576000610524846106b9565b9050600061053562015180426109a2565b6001600160a01b038616600090815260046020908152604080832084845290915290205490915080158061056857508083105b156103b15750816001600160a01b0386166000908152600460205260408120816103d56001866109c4565b6000546001600160a01b031633146105bd5760405162461bcd60e51b815260040161023390610965565b6040805180820182526001600160a01b03938416815260ff92831660208083019182529585166000908152600290965291909420935184549151909216600160a01b026001600160a81b03199091169190921617179055565b6001546001600160a01b031633146106685760405162461bcd60e51b815260206004820152601560248201527427a7262c902822a72224a7239027a822a920aa27a960591b6044820152606401610233565b60018054600080546001600160a01b0383166001600160a01b031991821681178355921690925560405190917f8eb831fe42156caaf4721a87ad40c6e662b893dbeee76d7a3ed2564a318b091c91a2565b6001600160a01b0380821660009081526002602090815260408083205481516350d25bcd60e01b81529151939485949116926350d25bcd92600480820193918290030181865afa158015610711573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073591906109fa565b90506000811161077c5760405162461bcd60e51b8152602060048201526012602482015271496e76616c6964206665656420707269636560701b6044820152606401610233565b6001600160a01b03808416600090815260026020908152604080832054815163313ce56760e01b815291519394169263313ce567926004808401939192918290030181865afa1580156107d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f79190610a13565b6001600160a01b038516600090815260026020526040902054909150600160a01b900460ff1660246108298284610a30565b60ff16116108685760008161083f846024610a55565b6108499190610a55565b905061085681600a610b5c565b61086090856109db565b94505061089b565b600060246108768385610a30565b6108809190610a55565b905061088d81600a610b5c565b61089790856109a2565b9450505b505050919050565b6001600160a01b03811681146108b857600080fd5b50565b6000602082840312156108cd57600080fd5b81356108d8816108a3565b9392505050565b600080604083850312156108f257600080fd5b82356108fd816108a3565b946020939093013593505050565b60ff811681146108b857600080fd5b60008060006060848603121561092f57600080fd5b833561093a816108a3565b9250602084013561094a816108a3565b9150604084013561095a8161090b565b809150509250925092565b6020808252600d908201526c27a7262c9027a822a920aa27a960991b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000826109bf57634e487b7160e01b600052601260045260246000fd5b500490565b6000828210156109d6576109d661098c565b500390565b60008160001904831182151516156109f5576109f561098c565b500290565b600060208284031215610a0c57600080fd5b5051919050565b600060208284031215610a2557600080fd5b81516108d88161090b565b600060ff821660ff84168060ff03821115610a4d57610a4d61098c565b019392505050565b600060ff821660ff841680821015610a6f57610a6f61098c565b90039392505050565b600181815b80851115610ab3578160001904821115610a9957610a9961098c565b80851615610aa657918102915b93841c9390800290610a7d565b509250929050565b600082610aca575060016104b6565b81610ad7575060006104b6565b8160018114610aed5760028114610af757610b13565b60019150506104b6565b60ff841115610b0857610b0861098c565b50506001821b6104b6565b5060208310610133831016604e8410600b8410161715610b36575081810a6104b6565b610b408383610a78565b8060001904821115610b5457610b5461098c565b029392505050565b60006108d860ff841683610abb56fea26469706673582212209a6a51f77a04ca8c391ae67a1be9b122fbcd91e87a1dc91b6372e6af1679e6bb64736f6c634300080d00330000000000000000000000006535020cceb810bdb3f3ca5e93de2460ff7989bb

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806370c4c23f1161007157806370c4c23f1461017d578063949c4fa3146101a8578063ac7e534e146101bb578063ae10561b146101ce578063d54e65fb146101e1578063e983fe25146101e957600080fd5b8063143d4e49146100ae5780631badc89a146100c35780632fba4aa9146100d6578063449e815d14610131578063570ca73514610152575b600080fd5b6100c16100bc3660046108bb565b610209565b005b6100c16100d13660046108df565b61025e565b61010b6100e43660046108bb565b6002602052600090815260409020546001600160a01b03811690600160a01b900460ff1682565b604080516001600160a01b03909316835260ff9091166020830152015b60405180910390f35b61014461013f3660046108df565b6102a4565b604051908152602001610128565b600054610165906001600160a01b031681565b6040516001600160a01b039091168152602001610128565b61014461018b3660046108df565b600460209081526000928352604080842090915290825290205481565b6101446101b63660046108df565b6104bc565b600154610165906001600160a01b031681565b6100c16101dc36600461091a565b610593565b6100c1610616565b6101446101f73660046108bb565b60036020526000908152604090205481565b6000546001600160a01b0316331461023c5760405162461bcd60e51b815260040161023390610965565b60405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146102885760405162461bcd60e51b815260040161023390610965565b6001600160a01b03909116600090815260036020526040902055565b6001600160a01b038216600090815260036020526040812054156102e157506001600160a01b0382166000908152600360205260409020546104b6565b6001600160a01b03838116600090815260026020526040902054161561047c57600061030c846106b9565b9050600061031d62015180426109a2565b6001600160a01b038616600090815260046020908152604080832084845290915290205490915080158061035057508083105b156103b157506001600160a01b038516600081815260046020908152604080832085845282529182902085905590518481528492917fbbf79d525adf40b05f7e2779ec9f3bc352803dc6f9a7ab4512fbde7120d67597910160405180910390a25b6001600160a01b0386166000908152600460205260408120816103d56001866109c4565b8152602001908152602001600020549050600061271087866103f791906109db565b61040191906109a2565b9050600082841180156104145750600083115b61041e5783610420565b825b905060008111801561043157508082115b1561046e57600088610445836127106109db565b61044f91906109a2565b905086811061045e5786610460565b805b9750505050505050506104b6565b8596505050505050506104b6565b60405162461bcd60e51b815260206004820152600f60248201526e141c9a58d9481b9bdd08199bdd5b99608a1b6044820152606401610233565b92915050565b6001600160a01b038216600090815260036020526040812054156104f957506001600160a01b0382166000908152600360205260409020546104b6565b6001600160a01b03838116600090815260026020526040902054161561047c576000610524846106b9565b9050600061053562015180426109a2565b6001600160a01b038616600090815260046020908152604080832084845290915290205490915080158061056857508083105b156103b15750816001600160a01b0386166000908152600460205260408120816103d56001866109c4565b6000546001600160a01b031633146105bd5760405162461bcd60e51b815260040161023390610965565b6040805180820182526001600160a01b03938416815260ff92831660208083019182529585166000908152600290965291909420935184549151909216600160a01b026001600160a81b03199091169190921617179055565b6001546001600160a01b031633146106685760405162461bcd60e51b815260206004820152601560248201527427a7262c902822a72224a7239027a822a920aa27a960591b6044820152606401610233565b60018054600080546001600160a01b0383166001600160a01b031991821681178355921690925560405190917f8eb831fe42156caaf4721a87ad40c6e662b893dbeee76d7a3ed2564a318b091c91a2565b6001600160a01b0380821660009081526002602090815260408083205481516350d25bcd60e01b81529151939485949116926350d25bcd92600480820193918290030181865afa158015610711573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073591906109fa565b90506000811161077c5760405162461bcd60e51b8152602060048201526012602482015271496e76616c6964206665656420707269636560701b6044820152606401610233565b6001600160a01b03808416600090815260026020908152604080832054815163313ce56760e01b815291519394169263313ce567926004808401939192918290030181865afa1580156107d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f79190610a13565b6001600160a01b038516600090815260026020526040902054909150600160a01b900460ff1660246108298284610a30565b60ff16116108685760008161083f846024610a55565b6108499190610a55565b905061085681600a610b5c565b61086090856109db565b94505061089b565b600060246108768385610a30565b6108809190610a55565b905061088d81600a610b5c565b61089790856109a2565b9450505b505050919050565b6001600160a01b03811681146108b857600080fd5b50565b6000602082840312156108cd57600080fd5b81356108d8816108a3565b9392505050565b600080604083850312156108f257600080fd5b82356108fd816108a3565b946020939093013593505050565b60ff811681146108b857600080fd5b60008060006060848603121561092f57600080fd5b833561093a816108a3565b9250602084013561094a816108a3565b9150604084013561095a8161090b565b809150509250925092565b6020808252600d908201526c27a7262c9027a822a920aa27a960991b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000826109bf57634e487b7160e01b600052601260045260246000fd5b500490565b6000828210156109d6576109d661098c565b500390565b60008160001904831182151516156109f5576109f561098c565b500290565b600060208284031215610a0c57600080fd5b5051919050565b600060208284031215610a2557600080fd5b81516108d88161090b565b600060ff821660ff84168060ff03821115610a4d57610a4d61098c565b019392505050565b600060ff821660ff841680821015610a6f57610a6f61098c565b90039392505050565b600181815b80851115610ab3578160001904821115610a9957610a9961098c565b80851615610aa657918102915b93841c9390800290610a7d565b509250929050565b600082610aca575060016104b6565b81610ad7575060006104b6565b8160018114610aed5760028114610af757610b13565b60019150506104b6565b60ff841115610b0857610b0861098c565b50506001821b6104b6565b5060208310610133831016604e8410600b8410161715610b36575081810a6104b6565b610b408383610a78565b8060001904821115610b5457610b5461098c565b029392505050565b60006108d860ff841683610abb56fea26469706673582212209a6a51f77a04ca8c391ae67a1be9b122fbcd91e87a1dc91b6372e6af1679e6bb64736f6c634300080d0033

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

0000000000000000000000006535020cceb810bdb3f3ca5e93de2460ff7989bb

-----Decoded View---------------
Arg [0] : _operator (address): 0x6535020cCeB810Bdb3F3cA5e93dE2460FF7989BB

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000006535020cceb810bdb3f3ca5e93de2460ff7989bb


Deployed Bytecode Sourcemap

875:6435:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1619:105;;;;;;:::i;:::-;;:::i;:::-;;2621:101;;;;;;:::i;:::-;;:::i;1059:42::-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1059:42:0;;;-1:-1:-1;;;1059:42:0;;;;;;;;;;-1:-1:-1;;;;;931:32:1;;;913:51;;1012:4;1000:17;;;995:2;980:18;;973:45;886:18;1059:42:0;;;;;;;;4847:1418;;;;;;:::i;:::-;;:::i;:::-;;;1175:25:1;;;1163:2;1148:18;4847:1418:0;1029:177:1;992:23:0;;;;;-1:-1:-1;;;;;992:23:0;;;;;;-1:-1:-1;;;;;1375:32:1;;;1357:51;;1345:2;1330:18;992:23:0;1211:203:1;1159:59:0;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;3290:1280;;;;;;:::i;:::-;;:::i;1022:30::-;;;;;-1:-1:-1;;;;;1022:30:0;;;2124:143;;;;;;:::i;:::-;;:::i;2838:230::-;;;:::i;1108:44::-;;;;;;:::i;:::-;;;;;;;;;;;;;;1619:105;1401:8;;-1:-1:-1;;;;;1401:8:0;1387:10;:22;1379:48;;;;-1:-1:-1;;;1379:48:0;;;;;;;:::i;:::-;;;;;;;;;1691:15:::1;:30:::0;;-1:-1:-1;;;;;;1691:30:0::1;-1:-1:-1::0;;;;;1691:30:0;;;::::1;::::0;;;::::1;::::0;;1619:105::o;2621:101::-;1401:8;;-1:-1:-1;;;;;1401:8:0;1387:10;:22;1379:48;;;;-1:-1:-1;;;1379:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2693:18:0;;::::1;;::::0;;;:11:::1;:18;::::0;;;;:26;2621:101::o;4847:1418::-;-1:-1:-1;;;;;4944:18:0;;4924:4;4944:18;;;:11;:18;;;;;;:22;4941:52;;-1:-1:-1;;;;;;4975:18:0;;;;;;:11;:18;;;;;;4968:25;;4941:52;-1:-1:-1;;;;;5007:12:0;;;5051:1;5007:12;;;:5;:12;;;;;:17;;:47;5004:1218;;5108:20;5131:25;5150:5;5131:18;:25::i;:::-;5108:48;-1:-1:-1;5226:8:0;5237:24;5255:6;5237:15;:24;:::i;:::-;-1:-1:-1;;;;;5293:16:0;;5276:14;5293:16;;;:9;:16;;;;;;;;:21;;;;;;;;;5226:35;;-1:-1:-1;5332:14:0;;;:45;;;5368:9;5350:15;:27;5332:45;5329:232;;;-1:-1:-1;;;;;;5398:16:0;;;;;;:9;:16;;;;;;;;:21;;;;;;;;;:39;;;5507:38;;1175:25:1;;;5398:39:0;;:16;5507:38;;1148:18:1;5507:38:0;;;;;;;5329:232;-1:-1:-1;;;;;5632:16:0;;5611:18;5632:16;;;:9;:16;;;;;5611:18;5649:7;5655:1;5649:3;:7;:::i;:::-;5632:25;;;;;;;;;;;;5611:46;;5745:22;5810:5;5788:19;5770:15;:37;;;;:::i;:::-;:45;;;;:::i;:::-;5745:70;;5830:14;5859:13;5847:9;:25;:46;;;;;5892:1;5876:13;:17;5847:46;:74;;5912:9;5847:74;;;5896:13;5847:74;5830:91;;5951:1;5939:9;:13;:46;;;;;5976:9;5956:17;:29;5939:46;5936:236;;;6006:18;6047:19;6027:17;:9;6039:5;6027:17;:::i;:::-;:39;;;;:::i;:::-;6006:60;;6108:15;6092:13;:31;:64;;6141:15;6092:64;;;6126:13;6092:64;6085:71;;;;;;;;;;;5936:236;6193:15;6186:22;;;;;;;;;;5004:1218;6232:25;;-1:-1:-1;;;6232:25:0;;3290:2:1;6232:25:0;;;3272:21:1;3329:2;3309:18;;;3302:30;-1:-1:-1;;;3348:18:1;;;3341:45;3403:18;;6232:25:0;3088:339:1;4847:1418:0;;;;;:::o;3290:1280::-;-1:-1:-1;;;;;3393:18:0;;3373:4;3393:18;;;:11;:18;;;;;;:22;3390:52;;-1:-1:-1;;;;;;3424:18:0;;;;;;:11;:18;;;;;;3417:25;;3390:52;-1:-1:-1;;;;;3456:12:0;;;3500:1;3456:12;;;:5;:12;;;;;:17;;:47;3453:1074;;3556:20;3579:25;3598:5;3579:18;:25::i;:::-;3556:48;-1:-1:-1;3619:8:0;3630:24;3648:6;3630:15;:24;:::i;:::-;-1:-1:-1;;;;;3718:16:0;;3701:14;3718:16;;;:9;:16;;;;;;;;:21;;;;;;;;;3619:35;;-1:-1:-1;3757:14:0;;;:45;;;3793:9;3775:15;:27;3757:45;3754:112;;;-1:-1:-1;3835:15:0;-1:-1:-1;;;;;3937:16:0;;3916:18;3937:16;;;:9;:16;;;;;3916:18;3954:7;3960:1;3954:3;:7;:::i;2124:143::-;1401:8;;-1:-1:-1;;;;;1401:8:0;1387:10;:22;1379:48;;;;-1:-1:-1;;;1379:48:0;;;;;;;:::i;:::-;2235:29:::1;::::0;;;;::::1;::::0;;-1:-1:-1;;;;;2235:29:0;;::::1;::::0;;::::1;::::0;;::::1;;::::0;;::::1;::::0;;;2220:12;;::::1;-1:-1:-1::0;2220:12:0;;;:5:::1;:12:::0;;;;;;;:44;;;;;;;;::::1;-1:-1:-1::0;;;2220:44:0::1;-1:-1:-1::0;;;;;;2220:44:0;;;;;;::::1;::::0;::::1;::::0;;2124:143::o;2838:230::-;2903:15;;-1:-1:-1;;;;;2903:15:0;2889:10;:29;2881:63;;;;-1:-1:-1;;;2881:63:0;;3634:2:1;2881:63:0;;;3616:21:1;3673:2;3653:18;;;3646:30;-1:-1:-1;;;3692:18:1;;;3685:51;3753:18;;2881:63:0;3432:345:1;2881:63:0;2966:15;;;;2955:26;;-1:-1:-1;;;;;2966:15:0;;-1:-1:-1;;;;;;2955:26:0;;;;;;;2992:28;;;;;3036:24;;2966:15;;3036:24;;;2838:230::o;6481:704::-;-1:-1:-1;;;;;6624:12:0;;;6547:20;6624:12;;;:5;:12;;;;;;;;:17;:32;;-1:-1:-1;;;6624:32:0;;;;6547:20;;;;6624:17;;;:30;;:32;;;;;;;;;;;:17;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6611:45;;6683:1;6675:5;:9;6667:40;;;;-1:-1:-1;;;6667:40:0;;4173:2:1;6667:40:0;;;4155:21:1;4212:2;4192:18;;;4185:30;-1:-1:-1;;;4231:18:1;;;4224:48;4289:18;;6667:40:0;3971:342:1;6667:40:0;-1:-1:-1;;;;;6767:12:0;;;6746:18;6767:12;;;:5;:12;;;;;;;;:17;:28;;-1:-1:-1;;;6767:28:0;;;;6746:18;;6767:17;;:26;;:28;;;;;:12;;:28;;;;;;:17;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;6828:12:0;;6806:19;6828:12;;;:5;:12;;;;;:26;6746:49;;-1:-1:-1;;;;6828:26:0;;;;6900:2;6868:28;6828:26;6746:49;6868:28;:::i;:::-;:34;;;6865:311;;6919:14;6956:13;6936:17;6941:12;6936:2;:17;:::i;:::-;:33;;;;:::i;:::-;6919:50;-1:-1:-1;7011:14:0;6919:50;7011:2;:14;:::i;:::-;7002:24;;:5;:24;:::i;:::-;6984:42;;6904:134;6865:311;;;7059:14;7107:2;7076:28;7091:13;7076:12;:28;:::i;:::-;:33;;;;:::i;:::-;7059:50;-1:-1:-1;7150:14:0;7059:50;7150:2;:14;:::i;:::-;7142:22;;:5;:22;:::i;:::-;7124:40;;7044:132;6865:311;6569:616;;;6481:704;;;:::o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:247::-;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;:::-;386:5;150:247;-1:-1:-1;;;150:247:1:o;402:315::-;470:6;478;531:2;519:9;510:7;506:23;502:32;499:52;;;547:1;544;537:12;499:52;586:9;573:23;605:31;630:5;605:31;:::i;:::-;655:5;707:2;692:18;;;;679:32;;-1:-1:-1;;;402:315:1:o;1419:114::-;1503:4;1496:5;1492:16;1485:5;1482:27;1472:55;;1523:1;1520;1513:12;1538:546;1634:6;1642;1650;1703:2;1691:9;1682:7;1678:23;1674:32;1671:52;;;1719:1;1716;1709:12;1671:52;1758:9;1745:23;1777:31;1802:5;1777:31;:::i;:::-;1827:5;-1:-1:-1;1884:2:1;1869:18;;1856:32;1897:33;1856:32;1897:33;:::i;:::-;1949:7;-1:-1:-1;2008:2:1;1993:18;;1980:32;2021:31;1980:32;2021:31;:::i;:::-;2071:7;2061:17;;;1538:546;;;;;:::o;2089:337::-;2291:2;2273:21;;;2330:2;2310:18;;;2303:30;-1:-1:-1;;;2364:2:1;2349:18;;2342:43;2417:2;2402:18;;2089:337::o;2431:127::-;2492:10;2487:3;2483:20;2480:1;2473:31;2523:4;2520:1;2513:15;2547:4;2544:1;2537:15;2563:217;2603:1;2629;2619:132;;2673:10;2668:3;2664:20;2661:1;2654:31;2708:4;2705:1;2698:15;2736:4;2733:1;2726:15;2619:132;-1:-1:-1;2765:9:1;;2563:217::o;2785:125::-;2825:4;2853:1;2850;2847:8;2844:34;;;2858:18;;:::i;:::-;-1:-1:-1;2895:9:1;;2785:125::o;2915:168::-;2955:7;3021:1;3017;3013:6;3009:14;3006:1;3003:21;2998:1;2991:9;2984:17;2980:45;2977:71;;;3028:18;;:::i;:::-;-1:-1:-1;3068:9:1;;2915:168::o;3782:184::-;3852:6;3905:2;3893:9;3884:7;3880:23;3876:32;3873:52;;;3921:1;3918;3911:12;3873:52;-1:-1:-1;3944:16:1;;3782:184;-1:-1:-1;3782:184:1:o;4318:247::-;4386:6;4439:2;4427:9;4418:7;4414:23;4410:32;4407:52;;;4455:1;4452;4445:12;4407:52;4487:9;4481:16;4506:29;4529:5;4506:29;:::i;4570:204::-;4608:3;4644:4;4641:1;4637:12;4676:4;4673:1;4669:12;4711:3;4705:4;4701:14;4696:3;4693:23;4690:49;;;4719:18;;:::i;:::-;4755:13;;4570:204;-1:-1:-1;;;4570:204:1:o;4779:195::-;4817:4;4854;4851:1;4847:12;4886:4;4883:1;4879:12;4911:3;4906;4903:12;4900:38;;;4918:18;;:::i;:::-;4955:13;;;4779:195;-1:-1:-1;;;4779:195:1:o;4979:422::-;5068:1;5111:5;5068:1;5125:270;5146:7;5136:8;5133:21;5125:270;;;5205:4;5201:1;5197:6;5193:17;5187:4;5184:27;5181:53;;;5214:18;;:::i;:::-;5264:7;5254:8;5250:22;5247:55;;;5284:16;;;;5247:55;5363:22;;;;5323:15;;;;5125:270;;;5129:3;4979:422;;;;;:::o;5406:806::-;5455:5;5485:8;5475:80;;-1:-1:-1;5526:1:1;5540:5;;5475:80;5574:4;5564:76;;-1:-1:-1;5611:1:1;5625:5;;5564:76;5656:4;5674:1;5669:59;;;;5742:1;5737:130;;;;5649:218;;5669:59;5699:1;5690:10;;5713:5;;;5737:130;5774:3;5764:8;5761:17;5758:43;;;5781:18;;:::i;:::-;-1:-1:-1;;5837:1:1;5823:16;;5852:5;;5649:218;;5951:2;5941:8;5938:16;5932:3;5926:4;5923:13;5919:36;5913:2;5903:8;5900:16;5895:2;5889:4;5886:12;5882:35;5879:77;5876:159;;;-1:-1:-1;5988:19:1;;;6020:5;;5876:159;6067:34;6092:8;6086:4;6067:34;:::i;:::-;6137:6;6133:1;6129:6;6125:19;6116:7;6113:32;6110:58;;;6148:18;;:::i;:::-;6186:20;;5406:806;-1:-1:-1;;;5406:806:1:o;6217:140::-;6275:5;6304:47;6345:4;6335:8;6331:19;6325:4;6304:47;:::i

Swarm Source

ipfs://9a6a51f77a04ca8c391ae67a1be9b122fbcd91e87a1dc91b6372e6af1679e6bb

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ Download: CSV Export  ]
[ 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.