Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 2,243 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Update Rate | 20278637 | 8 hrs ago | IN | 0 ETH | 0.05783179 | ||||
Update Rate | 20275052 | 20 hrs ago | IN | 0 ETH | 0.0548575 | ||||
Update Rate | 20271470 | 32 hrs ago | IN | 0 ETH | 0.05521741 | ||||
Update Rate | 20267895 | 44 hrs ago | IN | 0 ETH | 0.05786239 | ||||
Update Rate | 20264314 | 2 days ago | IN | 0 ETH | 0.05624717 | ||||
Update Rate | 20260751 | 2 days ago | IN | 0 ETH | 0.0587003 | ||||
Update Rate | 20257167 | 3 days ago | IN | 0 ETH | 0.05401483 | ||||
Update Rate | 20253589 | 3 days ago | IN | 0 ETH | 0.05909584 | ||||
Update Rate | 20250004 | 4 days ago | IN | 0 ETH | 0.05496465 | ||||
Update Rate | 20246423 | 4 days ago | IN | 0 ETH | 0.05612232 | ||||
Update Rate | 20242842 | 5 days ago | IN | 0 ETH | 0.05593924 | ||||
Update Rate | 20239258 | 5 days ago | IN | 0 ETH | 0.05735758 | ||||
Update Rate | 20235678 | 6 days ago | IN | 0 ETH | 0.05352552 | ||||
Update Rate | 20232103 | 6 days ago | IN | 0 ETH | 0.04825251 | ||||
Update Rate | 20228521 | 7 days ago | IN | 0 ETH | 0.0527228 | ||||
Update Rate | 20224939 | 7 days ago | IN | 0 ETH | 0.04975859 | ||||
Update Rate | 20221360 | 8 days ago | IN | 0 ETH | 0.02283203 | ||||
Update Rate | 20217785 | 8 days ago | IN | 0 ETH | 0.05127447 | ||||
Update Rate | 20214206 | 9 days ago | IN | 0 ETH | 0.05094293 | ||||
Update Rate | 20210623 | 9 days ago | IN | 0 ETH | 0.04973771 | ||||
Update Rate | 20207040 | 10 days ago | IN | 0 ETH | 0.04877422 | ||||
Update Rate | 20203455 | 10 days ago | IN | 0 ETH | 0.04886903 | ||||
Update Rate | 20199876 | 11 days ago | IN | 0 ETH | 0.04897474 | ||||
Update Rate | 20196297 | 11 days ago | IN | 0 ETH | 0.04897087 | ||||
Update Rate | 20192719 | 12 days ago | IN | 0 ETH | 0.05008242 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block | From | To | Value | ||
---|---|---|---|---|---|---|
12378093 | 1162 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Name:
PIRateSetter
Compiler Version
v0.6.7+commit.b8d736ae
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-05-06 */ pragma solidity 0.6.7; contract GebMath { uint256 public constant RAY = 10 ** 27; uint256 public constant WAD = 10 ** 18; function ray(uint x) public pure returns (uint z) { z = multiply(x, 10 ** 9); } function rad(uint x) public pure returns (uint z) { z = multiply(x, 10 ** 27); } function minimum(uint x, uint y) public pure returns (uint z) { z = (x <= y) ? x : y; } function addition(uint x, uint y) public pure returns (uint z) { z = x + y; require(z >= x, "uint-uint-add-overflow"); } function subtract(uint x, uint y) public pure returns (uint z) { z = x - y; require(z <= x, "uint-uint-sub-underflow"); } function multiply(uint x, uint y) public pure returns (uint z) { require(y == 0 || (z = x * y) / y == x, "uint-uint-mul-overflow"); } function rmultiply(uint x, uint y) public pure returns (uint z) { z = multiply(x, y) / RAY; } function rdivide(uint x, uint y) public pure returns (uint z) { z = multiply(x, RAY) / y; } function wdivide(uint x, uint y) public pure returns (uint z) { z = multiply(x, WAD) / y; } function wmultiply(uint x, uint y) public pure returns (uint z) { z = multiply(x, y) / WAD; } function rpower(uint x, uint n, uint base) public pure returns (uint z) { assembly { switch x case 0 {switch n case 0 {z := base} default {z := 0}} default { switch mod(n, 2) case 0 { z := base } default { z := x } let half := div(base, 2) // for rounding. for { n := div(n, 2) } n { n := div(n,2) } { let xx := mul(x, x) if iszero(eq(div(xx, x), x)) { revert(0,0) } let xxRound := add(xx, half) if lt(xxRound, xx) { revert(0,0) } x := div(xxRound, base) if mod(n,2) { let zx := mul(z, x) if and(iszero(iszero(x)), iszero(eq(div(zx, x), z))) { revert(0,0) } let zxRound := add(zx, half) if lt(zxRound, zx) { revert(0,0) } z := div(zxRound, base) } } } } } } abstract contract OracleLike { function getResultWithValidity() virtual external view returns (uint256, bool); } abstract contract PIDCalculator { function computeRate(uint256, uint256, uint256) virtual external returns (uint256); function rt(uint256, uint256, uint256) virtual external view returns (uint256); function pscl() virtual external view returns (uint256); function tlv() virtual external view returns (uint256); } contract PIRateSetter is GebMath { // --- Auth --- mapping (address => uint) public authorizedAccounts; /** * @notice Add auth to an account * @param account Account to add auth to */ function addAuthorization(address account) external isAuthorized { authorizedAccounts[account] = 1; emit AddAuthorization(account); } /** * @notice Remove auth from an account * @param account Account to remove auth from */ function removeAuthorization(address account) external isAuthorized { authorizedAccounts[account] = 0; emit RemoveAuthorization(account); } /** * @notice Checks whether msg.sender can call an authed function **/ modifier isAuthorized { require(authorizedAccounts[msg.sender] == 1, "PIRateSetter/account-not-authorized"); _; } // --- Variables --- // When the price feed was last updated uint256 public lastUpdateTime; // [timestamp] // Enforced gap between calls uint256 public updateRateDelay; // [seconds] // Whether the leak is set to zero by default uint256 public defaultLeak; // [0 or 1] // --- System Dependencies --- // OSM or medianizer for the system coin OracleLike public orcl; // OracleRelayer where the redemption price is stored OracleRelayerLike public oracleRelayer; // The contract that will pass the new redemption rate to the oracle relayer SetterRelayer public setterRelayer; // Calculator for the redemption rate PIDCalculator public pidCalculator; // --- Events --- event AddAuthorization(address account); event RemoveAuthorization(address account); event ModifyParameters( bytes32 parameter, address addr ); event ModifyParameters( bytes32 parameter, uint256 val ); event UpdateRedemptionRate( uint marketPrice, uint redemptionPrice, uint redemptionRate ); event FailUpdateRedemptionRate( uint marketPrice, uint redemptionPrice, uint redemptionRate, bytes reason ); constructor( address oracleRelayer_, address setterRelayer_, address orcl_, address pidCalculator_, uint256 updateRateDelay_ ) public { require(oracleRelayer_ != address(0), "PIRateSetter/null-oracle-relayer"); require(setterRelayer_ != address(0), "PIRateSetter/null-setter-relayer"); require(orcl_ != address(0), "PIRateSetter/null-orcl"); require(pidCalculator_ != address(0), "PIRateSetter/null-calculator"); authorizedAccounts[msg.sender] = 1; defaultLeak = 1; oracleRelayer = OracleRelayerLike(oracleRelayer_); setterRelayer = SetterRelayer(setterRelayer_); orcl = OracleLike(orcl_); pidCalculator = PIDCalculator(pidCalculator_); updateRateDelay = updateRateDelay_; emit AddAuthorization(msg.sender); emit ModifyParameters("orcl", orcl_); emit ModifyParameters("oracleRelayer", oracleRelayer_); emit ModifyParameters("setterRelayer", setterRelayer_); emit ModifyParameters("pidCalculator", pidCalculator_); emit ModifyParameters("updateRateDelay", updateRateDelay_); } // --- Boolean Logic --- function either(bool x, bool y) internal pure returns (bool z) { assembly{ z := or(x, y)} } // --- Management --- /* * @notify Modify the address of a contract that the setter is connected to * @param parameter Contract name * @param addr The new contract address */ function modifyParameters(bytes32 parameter, address addr) external isAuthorized { require(addr != address(0), "PIRateSetter/null-addr"); if (parameter == "orcl") orcl = OracleLike(addr); else if (parameter == "oracleRelayer") oracleRelayer = OracleRelayerLike(addr); else if (parameter == "setterRelayer") setterRelayer = SetterRelayer(addr); else if (parameter == "pidCalculator") { pidCalculator = PIDCalculator(addr); } else revert("PIRateSetter/modify-unrecognized-param"); emit ModifyParameters( parameter, addr ); } /* * @notify Modify a uint256 parameter * @param parameter The parameter name * @param val The new parameter value */ function modifyParameters(bytes32 parameter, uint256 val) external isAuthorized { if (parameter == "updateRateDelay") { require(val > 0, "PIRateSetter/null-update-delay"); updateRateDelay = val; } else if (parameter == "defaultLeak") { require(val <= 1, "PIRateSetter/invalid-default-leak"); defaultLeak = val; } else revert("PIRateSetter/modify-unrecognized-param"); emit ModifyParameters( parameter, val ); } // --- Feedback Mechanism --- /** * @notice Compute and set a new redemption rate * @param feeReceiver The proposed address that should receive the reward for calling this function * (unless it's address(0) in which case msg.sender will get it) **/ function updateRate(address feeReceiver) external { // The fee receiver must not be null require(feeReceiver != address(0), "PIRateSetter/null-fee-receiver"); // Check delay between calls require(either(subtract(now, lastUpdateTime) >= updateRateDelay, lastUpdateTime == 0), "PIRateSetter/wait-more"); // Get price feed updates (uint256 marketPrice, bool hasValidValue) = orcl.getResultWithValidity(); // If the oracle has a value require(hasValidValue, "PIRateSetter/invalid-oracle-value"); // If the price is non-zero require(marketPrice > 0, "PIRateSetter/null-price"); // Get the latest redemption price uint redemptionPrice = oracleRelayer.redemptionPrice(); // Calculate the rate uint256 iapcr = (defaultLeak == 1) ? RAY : rpower(pidCalculator.pscl(), pidCalculator.tlv(), RAY); uint256 calculated = pidCalculator.computeRate( marketPrice, redemptionPrice, iapcr ); // Store the timestamp of the update lastUpdateTime = now; // Update the rate using the setter relayer try setterRelayer.relayRate(calculated, feeReceiver) { // Emit success event emit UpdateRedemptionRate( ray(marketPrice), redemptionPrice, calculated ); } catch(bytes memory revertReason) { emit FailUpdateRedemptionRate( ray(marketPrice), redemptionPrice, calculated, revertReason ); } } // --- Getters --- /** * @notice Get the market price from the system coin oracle **/ function getMarketPrice() external view returns (uint256) { (uint256 marketPrice, ) = orcl.getResultWithValidity(); return marketPrice; } /** * @notice Get the redemption and the market prices for the system coin **/ function getRedemptionAndMarketPrices() external returns (uint256 marketPrice, uint256 redemptionPrice) { (marketPrice, ) = orcl.getResultWithValidity(); redemptionPrice = oracleRelayer.redemptionPrice(); } } abstract contract StabilityFeeTreasuryLike { function getAllowance(address) virtual external view returns (uint, uint); function systemCoin() virtual external view returns (address); function pullFunds(address, address, uint) virtual external; function setTotalAllowance(address, uint256) external virtual; function setPerBlockAllowance(address, uint256) external virtual; } contract IncreasingTreasuryReimbursement is GebMath { // --- Auth --- mapping (address => uint) public authorizedAccounts; /** * @notice Add auth to an account * @param account Account to add auth to */ function addAuthorization(address account) virtual external isAuthorized { authorizedAccounts[account] = 1; emit AddAuthorization(account); } /** * @notice Remove auth from an account * @param account Account to remove auth from */ function removeAuthorization(address account) virtual external isAuthorized { authorizedAccounts[account] = 0; emit RemoveAuthorization(account); } /** * @notice Checks whether msg.sender can call an authed function **/ modifier isAuthorized { require(authorizedAccounts[msg.sender] == 1, "IncreasingTreasuryReimbursement/account-not-authorized"); _; } // --- Variables --- // Starting reward for the fee receiver/keeper uint256 public baseUpdateCallerReward; // [wad] // Max possible reward for the fee receiver/keeper uint256 public maxUpdateCallerReward; // [wad] // Max delay taken into consideration when calculating the adjusted reward uint256 public maxRewardIncreaseDelay; // [seconds] // Rate applied to baseUpdateCallerReward every extra second passed beyond a certain point (e.g next time when a specific function needs to be called) uint256 public perSecondCallerRewardIncrease; // [ray] // SF treasury StabilityFeeTreasuryLike public treasury; // --- Events --- event AddAuthorization(address account); event RemoveAuthorization(address account); event ModifyParameters( bytes32 parameter, address addr ); event ModifyParameters( bytes32 parameter, uint256 val ); event FailRewardCaller(bytes revertReason, address feeReceiver, uint256 amount); constructor( address treasury_, uint256 baseUpdateCallerReward_, uint256 maxUpdateCallerReward_, uint256 perSecondCallerRewardIncrease_ ) public { if (address(treasury_) != address(0)) { require(StabilityFeeTreasuryLike(treasury_).systemCoin() != address(0), "IncreasingTreasuryReimbursement/treasury-coin-not-set"); } require(maxUpdateCallerReward_ >= baseUpdateCallerReward_, "IncreasingTreasuryReimbursement/invalid-max-caller-reward"); require(perSecondCallerRewardIncrease_ >= RAY, "IncreasingTreasuryReimbursement/invalid-per-second-reward-increase"); authorizedAccounts[msg.sender] = 1; treasury = StabilityFeeTreasuryLike(treasury_); baseUpdateCallerReward = baseUpdateCallerReward_; maxUpdateCallerReward = maxUpdateCallerReward_; perSecondCallerRewardIncrease = perSecondCallerRewardIncrease_; maxRewardIncreaseDelay = uint(-1); emit AddAuthorization(msg.sender); emit ModifyParameters("treasury", treasury_); emit ModifyParameters("baseUpdateCallerReward", baseUpdateCallerReward); emit ModifyParameters("maxUpdateCallerReward", maxUpdateCallerReward); emit ModifyParameters("perSecondCallerRewardIncrease", perSecondCallerRewardIncrease); } // --- Boolean Logic --- function either(bool x, bool y) internal pure returns (bool z) { assembly{ z := or(x, y)} } // --- Treasury --- /** * @notice This returns the stability fee treasury allowance for this contract by taking the minimum between the per block and the total allowances **/ function treasuryAllowance() public view returns (uint256) { (uint total, uint perBlock) = treasury.getAllowance(address(this)); return minimum(total, perBlock); } /* * @notice Get the SF reward that can be sent to a function caller right now * @param timeOfLastUpdate The last time when the function that the treasury pays for has been updated * @param defaultDelayBetweenCalls Enforced delay between calls to the function for which the treasury reimburses callers */ function getCallerReward(uint256 timeOfLastUpdate, uint256 defaultDelayBetweenCalls) public view returns (uint256) { // If the rewards are null or if the time of the last update is in the future or present, return 0 bool nullRewards = (baseUpdateCallerReward == 0 && maxUpdateCallerReward == 0); if (either(timeOfLastUpdate >= now, nullRewards)) return 0; // If the time elapsed is smaller than defaultDelayBetweenCalls or if the base reward is zero, return 0 uint256 timeElapsed = (timeOfLastUpdate == 0) ? defaultDelayBetweenCalls : subtract(now, timeOfLastUpdate); if (either(timeElapsed < defaultDelayBetweenCalls, baseUpdateCallerReward == 0)) { return 0; } // If too much time elapsed, return the max reward uint256 adjustedTime = subtract(timeElapsed, defaultDelayBetweenCalls); uint256 maxPossibleReward = minimum(maxUpdateCallerReward, treasuryAllowance() / RAY); if (adjustedTime > maxRewardIncreaseDelay) { return maxPossibleReward; } // Calculate the reward uint256 calculatedReward = baseUpdateCallerReward; if (adjustedTime > 0) { calculatedReward = rmultiply(rpower(perSecondCallerRewardIncrease, adjustedTime, RAY), calculatedReward); } // If the reward is higher than max, set it to max if (calculatedReward > maxPossibleReward) { calculatedReward = maxPossibleReward; } return calculatedReward; } /** * @notice Send a stability fee reward to an address * @param proposedFeeReceiver The SF receiver * @param reward The system coin amount to send **/ function rewardCaller(address proposedFeeReceiver, uint256 reward) internal { // If the receiver is the treasury itself or if the treasury is null or if the reward is zero, return if (address(treasury) == proposedFeeReceiver) return; if (either(address(treasury) == address(0), reward == 0)) return; // Determine the actual receiver and send funds address finalFeeReceiver = (proposedFeeReceiver == address(0)) ? msg.sender : proposedFeeReceiver; try treasury.pullFunds(finalFeeReceiver, treasury.systemCoin(), reward) {} catch(bytes memory revertReason) { emit FailRewardCaller(revertReason, finalFeeReceiver, reward); } } } abstract contract OracleRelayerLike { function redemptionPrice() virtual external returns (uint256); function modifyParameters(bytes32,uint256) virtual external; } contract SetterRelayer is IncreasingTreasuryReimbursement { // --- Events --- event RelayRate(address setter, uint256 redemptionRate); // --- Variables --- // When the rate has last been relayed uint256 public lastUpdateTime; // [timestamp] // Enforced gap between relays uint256 public relayDelay; // [seconds] // The address that's allowed to pass new redemption rates address public setter; // The oracle relayer contract OracleRelayerLike public oracleRelayer; constructor( address oracleRelayer_, address treasury_, uint256 baseUpdateCallerReward_, uint256 maxUpdateCallerReward_, uint256 perSecondCallerRewardIncrease_, uint256 relayDelay_ ) public IncreasingTreasuryReimbursement(treasury_, baseUpdateCallerReward_, maxUpdateCallerReward_, perSecondCallerRewardIncrease_) { relayDelay = relayDelay_; oracleRelayer = OracleRelayerLike(oracleRelayer_); emit ModifyParameters("relayDelay", relayDelay_); } // --- Administration --- /* * @notice Change the addresses of contracts that this relayer is connected to * @param parameter The contract whose address is changed * @param addr The new contract address */ function modifyParameters(bytes32 parameter, address addr) external isAuthorized { require(addr != address(0), "SetterRelayer/null-addr"); if (parameter == "setter") { setter = addr; } else if (parameter == "treasury") { require(StabilityFeeTreasuryLike(addr).systemCoin() != address(0), "SetterRelayer/treasury-coin-not-set"); treasury = StabilityFeeTreasuryLike(addr); } else revert("SetterRelayer/modify-unrecognized-param"); emit ModifyParameters( parameter, addr ); } /* * @notify Modify a uint256 parameter * @param parameter The parameter name * @param val The new parameter value */ function modifyParameters(bytes32 parameter, uint256 val) external isAuthorized { if (parameter == "baseUpdateCallerReward") { require(val <= maxUpdateCallerReward, "SetterRelayer/invalid-base-caller-reward"); baseUpdateCallerReward = val; } else if (parameter == "maxUpdateCallerReward") { require(val >= baseUpdateCallerReward, "SetterRelayer/invalid-max-caller-reward"); maxUpdateCallerReward = val; } else if (parameter == "perSecondCallerRewardIncrease") { require(val >= RAY, "SetterRelayer/invalid-caller-reward-increase"); perSecondCallerRewardIncrease = val; } else if (parameter == "maxRewardIncreaseDelay") { require(val > 0, "SetterRelayer/invalid-max-increase-delay"); maxRewardIncreaseDelay = val; } else if (parameter == "relayDelay") { relayDelay = val; } else revert("SetterRelayer/modify-unrecognized-param"); emit ModifyParameters( parameter, val ); } // --- Core Logic --- /* * @notice Relay a new redemption rate to the OracleRelayer * @param redemptionRate The new redemption rate to relay */ function relayRate(uint256 redemptionRate, address feeReceiver) external { // Perform checks require(setter == msg.sender, "SetterRelayer/invalid-caller"); require(feeReceiver != address(0), "SetterRelayer/null-fee-receiver"); require(feeReceiver != setter, "SetterRelayer/setter-cannot-receive-fees"); // Check delay between calls require(either(subtract(now, lastUpdateTime) >= relayDelay, lastUpdateTime == 0), "SetterRelayer/wait-more"); // Get the caller's reward uint256 callerReward = getCallerReward(lastUpdateTime, relayDelay); // Store the timestamp of the update lastUpdateTime = now; // Update the redemption price and then set the rate oracleRelayer.redemptionPrice(); oracleRelayer.modifyParameters("redemptionRate", redemptionRate); // Emit an event emit RelayRate(setter, redemptionRate); // Pay the caller for relaying the rate rewardCaller(feeReceiver, callerReward); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"oracleRelayer_","type":"address"},{"internalType":"address","name":"setterRelayer_","type":"address"},{"internalType":"address","name":"orcl_","type":"address"},{"internalType":"address","name":"pidCalculator_","type":"address"},{"internalType":"uint256","name":"updateRateDelay_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"AddAuthorization","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"redemptionPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"redemptionRate","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"FailUpdateRedemptionRate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"parameter","type":"bytes32"},{"indexed":false,"internalType":"address","name":"addr","type":"address"}],"name":"ModifyParameters","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"parameter","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"val","type":"uint256"}],"name":"ModifyParameters","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"RemoveAuthorization","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"redemptionPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"redemptionRate","type":"uint256"}],"name":"UpdateRedemptionRate","type":"event"},{"inputs":[],"name":"RAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addAuthorization","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"addition","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"authorizedAccounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultLeak","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMarketPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRedemptionAndMarketPrices","outputs":[{"internalType":"uint256","name":"marketPrice","type":"uint256"},{"internalType":"uint256","name":"redemptionPrice","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastUpdateTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"minimum","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"parameter","type":"bytes32"},{"internalType":"address","name":"addr","type":"address"}],"name":"modifyParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"parameter","type":"bytes32"},{"internalType":"uint256","name":"val","type":"uint256"}],"name":"modifyParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"multiply","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"oracleRelayer","outputs":[{"internalType":"contract OracleRelayerLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"orcl","outputs":[{"internalType":"contract OracleLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pidCalculator","outputs":[{"internalType":"contract PIDCalculator","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"rad","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"ray","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"rdivide","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeAuthorization","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"rmultiply","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"n","type":"uint256"},{"internalType":"uint256","name":"base","type":"uint256"}],"name":"rpower","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"setterRelayer","outputs":[{"internalType":"contract SetterRelayer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"subtract","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"feeReceiver","type":"address"}],"name":"updateRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateRateDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"wdivide","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"wmultiply","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b506040516117f13803806117f1833981810160405260a081101561003357600080fd5b508051602082015160408301516060840151608090940151929391929091906001600160a01b0385166100ad576040805162461bcd60e51b815260206004820181905260248201527f5049526174655365747465722f6e756c6c2d6f7261636c652d72656c61796572604482015290519081900360640190fd5b6001600160a01b038416610108576040805162461bcd60e51b815260206004820181905260248201527f5049526174655365747465722f6e756c6c2d7365747465722d72656c61796572604482015290519081900360640190fd5b6001600160a01b038316610163576040805162461bcd60e51b815260206004820152601660248201527f5049526174655365747465722f6e756c6c2d6f72636c00000000000000000000604482015290519081900360640190fd5b6001600160a01b0382166101be576040805162461bcd60e51b815260206004820152601c60248201527f5049526174655365747465722f6e756c6c2d63616c63756c61746f7200000000604482015290519081900360640190fd5b3360008181526020818152604091829020600190819055600355600580546001600160a01b038a81166001600160a01b031992831617909255600680548a84169083161790556004805489841690831617905560078054928816929091169190911790556002849055815192835290517f599a298163e1678bb1c676052a8930bf0b8a1261ed6e01b8a2391e55f70001029281900390910190a160408051631bdc98db60e21b81526001600160a01b038516602082015281516000805160206117d1833981519152929181900390910190a1604080516c37b930b1b632a932b630bcb2b960991b81526001600160a01b038716602082015281516000805160206117d1833981519152929181900390910190a1604080516c39b2ba3a32b92932b630bcb2b960991b81526001600160a01b038616602082015281516000805160206117d1833981519152929181900390910190a1604080516c3834b221b0b631bab630ba37b960991b81526001600160a01b038416602082015281516000805160206117d1833981519152929181900390910190a1604080516e7570646174655261746544656c617960881b81526020810183905281517fac7c5c1afaef770ec56ac6268cd3f2fbb1035858ead2601d6553157c33036c3a929181900390910190a1505050505061141d806103b46000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806363c9f725116100f9578063d6e882dc11610097578063f435899f11610071578063f435899f14610458578063f74826bb14610460578063f752fdc314610486578063fe4f5890146104a9576101c4565b8063d6e882dc14610404578063dd2d2a121461042d578063ddf0b81314610450576101c4565b80636a146024116100d35780636a146024146103ab57806394f3f81d146103b3578063a0871637146103d9578063c8f33c91146103fc576101c4565b806363c9f7251461036f578063660e16c3146103775780636614f0101461037f576101c4565b8063448a2638116101665780634faf61ab116101405780634faf61ab1461031b57806354f363a314610323578063552033c41461034657806363ac7ca71461034e576101c4565b8063448a2638146102d257806346f3e81c146102f65780634a8d632c14610313576101c4565b806324ba5884116101a257806324ba58841461023e57806335b28153146102645780633c8bb3e61461028c5780633ef5e445146102af576101c4565b8063056640b7146101c957806310213447146101fe578063165c4a161461021b575b600080fd5b6101ec600480360360408110156101df57600080fd5b50803590602001356104cc565b60408051918252519081900360200190f35b6101ec6004803603602081101561021457600080fd5b50356104f4565b6101ec6004803603604081101561023157600080fd5b508035906020013561050a565b6101ec6004803603602081101561025457600080fd5b50356001600160a01b031661056f565b61028a6004803603602081101561027a57600080fd5b50356001600160a01b0316610581565b005b6101ec600480360360408110156102a257600080fd5b5080359060200135610621565b6101ec600480360360408110156102c557600080fd5b5080359060200135610636565b6102da61068e565b604080516001600160a01b039092168252519081900360200190f35b6101ec6004803603602081101561030c57600080fd5b503561069d565b6102da6106b5565b6102da6106c4565b6101ec6004803603604081101561033957600080fd5b50803590602001356106d3565b6101ec610724565b610356610734565b6040805192835260208301919091528051918290030190f35b6101ec610820565b6101ec610826565b61028a6004803603604081101561039557600080fd5b50803590602001356001600160a01b031661089c565b6101ec610a93565b61028a600480360360208110156103c957600080fd5b50356001600160a01b0316610a9f565b6101ec600480360360408110156103ef57600080fd5b5080359060200135610b3e565b6101ec610b57565b6101ec6004803603606081101561041a57600080fd5b5080359060208101359060400135610b5d565b6101ec6004803603604081101561044357600080fd5b5080359060200135610c1b565b6101ec610c34565b6102da610c3a565b61028a6004803603602081101561047657600080fd5b50356001600160a01b0316610c49565b6101ec6004803603604081101561049c57600080fd5b50803590602001356111e1565b61028a600480360360408110156104bf57600080fd5b50803590602001356111f6565b60006b033b2e3c9fd0803ce80000006104e5848461050a565b816104ec57fe5b049392505050565b600061050482633b9aca0061050a565b92915050565b60008115806105255750508082028282828161052257fe5b04145b610504576040805162461bcd60e51b815260206004820152601660248201527575696e742d75696e742d6d756c2d6f766572666c6f7760501b604482015290519081900360640190fd5b60006020819052908152604090205481565b336000908152602081905260409020546001146105cf5760405162461bcd60e51b815260040180806020018281038252602381526020018061139f6023913960400191505060405180910390fd5b6001600160a01b0381166000818152602081815260409182902060019055815192835290517f599a298163e1678bb1c676052a8930bf0b8a1261ed6e01b8a2391e55f70001029281900390910190a150565b6000670de0b6b3a76400006104e5848461050a565b80820382811115610504576040805162461bcd60e51b815260206004820152601760248201527f75696e742d75696e742d7375622d756e646572666c6f77000000000000000000604482015290519081900360640190fd5b6007546001600160a01b031681565b6000610504826b033b2e3c9fd0803ce800000061050a565b6004546001600160a01b031681565b6005546001600160a01b031681565b81810182811015610504576040805162461bcd60e51b815260206004820152601660248201527575696e742d75696e742d6164642d6f766572666c6f7760501b604482015290519081900360640190fd5b6b033b2e3c9fd0803ce800000081565b60048054604080516309fa15b560e31b8152815160009485946001600160a01b031693634fd0ada89380830193919290829003018186803b15801561077857600080fd5b505afa15801561078c573d6000803e3d6000fd5b505050506040513d60408110156107a257600080fd5b505160055460408051630316dd2360e61b815290519294506001600160a01b039091169163c5b748c0916004808201926020929091908290030181600087803b1580156107ee57600080fd5b505af1158015610802573d6000803e3d6000fd5b505050506040513d602081101561081857600080fd5b505191929050565b60025481565b60048054604080516309fa15b560e31b8152815160009485946001600160a01b031693634fd0ada89380830193919290829003018186803b15801561086a57600080fd5b505afa15801561087e573d6000803e3d6000fd5b505050506040513d604081101561089457600080fd5b505191505090565b336000908152602081905260409020546001146108ea5760405162461bcd60e51b815260040180806020018281038252602381526020018061139f6023913960400191505060405180910390fd5b6001600160a01b03811661093e576040805162461bcd60e51b81526020600482015260166024820152752824a930ba32a9b2ba3a32b917b73ab63616b0b2323960511b604482015290519081900360640190fd5b81631bdc98db60e21b141561096d57600480546001600160a01b0319166001600160a01b038316179055610a4c565b816c37b930b1b632a932b630bcb2b960991b14156109a557600580546001600160a01b0319166001600160a01b038316179055610a4c565b816c39b2ba3a32b92932b630bcb2b960991b14156109dd57600680546001600160a01b0319166001600160a01b038316179055610a4c565b816c3834b221b0b631bab630ba37b960991b1415610a1557600780546001600160a01b0319166001600160a01b038316179055610a4c565b60405162461bcd60e51b81526004018080602001828103825260268152602001806113c26026913960400191505060405180910390fd5b604080518381526001600160a01b038316602082015281517fd91f38cf03346b5dc15fb60f9076f866295231ad3c3841a1051f8443f25170d1929181900390910190a15050565b670de0b6b3a764000081565b33600090815260208190526040902054600114610aed5760405162461bcd60e51b815260040180806020018281038252602381526020018061139f6023913960400191505060405180910390fd5b6001600160a01b03811660008181526020818152604080832092909255815192835290517f8834a87e641e9716be4f34527af5d23e11624f1ddeefede6ad75a9acfc31b9039281900390910190a150565b6000816104e5846b033b2e3c9fd0803ce800000061050a565b60015481565b6000838015610bfd57600184168015610b7857859250610b7c565b8392505b50600283046002850494505b8415610bf7578586028687820414610b9f57600080fd5b81810181811015610baf57600080fd5b8590049650506001851615610bec578583028387820414158715151615610bd557600080fd5b81810181811015610be557600080fd5b8590049350505b600285049450610b88565b50610c13565b838015610c0d5760009250610c11565b8392505b505b509392505050565b600081831115610c2b5781610c2d565b825b9392505050565b60035481565b6006546001600160a01b031681565b6001600160a01b038116610ca4576040805162461bcd60e51b815260206004820152601e60248201527f5049526174655365747465722f6e756c6c2d6665652d72656365697665720000604482015290519081900360640190fd5b610cc3600254610cb642600154610636565b1015600154600014611358565b610d0d576040805162461bcd60e51b81526020600482015260166024820152755049526174655365747465722f776169742d6d6f726560501b604482015290519081900360640190fd5b60048054604080516309fa15b560e31b8152815160009485946001600160a01b031693634fd0ada89380830193919290829003018186803b158015610d5157600080fd5b505afa158015610d65573d6000803e3d6000fd5b505050506040513d6040811015610d7b57600080fd5b508051602090910151909250905080610dc55760405162461bcd60e51b815260040180806020018281038252602181526020018061137e6021913960400191505060405180910390fd5b60008211610e1a576040805162461bcd60e51b815260206004820152601760248201527f5049526174655365747465722f6e756c6c2d7072696365000000000000000000604482015290519081900360640190fd5b60055460408051630316dd2360e61b815290516000926001600160a01b03169163c5b748c091600480830192602092919082900301818787803b158015610e6057600080fd5b505af1158015610e74573d6000803e3d6000fd5b505050506040513d6020811015610e8a57600080fd5b5051600354909150600090600114610f965760075460408051630be3617360e31b81529051610f91926001600160a01b031691635f1b0b98916004808301926020929190829003018186803b158015610ee257600080fd5b505afa158015610ef6573d6000803e3d6000fd5b505050506040513d6020811015610f0c57600080fd5b505160075460408051636e3126ef60e01b815290516001600160a01b0390921691636e3126ef91600480820192602092909190829003018186803b158015610f5357600080fd5b505afa158015610f67573d6000803e3d6000fd5b505050506040513d6020811015610f7d57600080fd5b50516b033b2e3c9fd0803ce8000000610b5d565b610fa4565b6b033b2e3c9fd0803ce80000005b600754604080516338e3899760e11b815260048101889052602481018690526044810184905290519293506000926001600160a01b03909216916371c7132e9160648082019260209290919082900301818787803b15801561100557600080fd5b505af1158015611019573d6000803e3d6000fd5b505050506040513d602081101561102f57600080fd5b505142600155600654604080516359426fad60e01b8152600481018490526001600160a01b038a8116602483015291519394509116916359426fad9160448082019260009290919082900301818387803b15801561108c57600080fd5b505af192505050801561109d575060015b611190573d8080156110cb576040519150601f19603f3d011682016040523d82523d6000602084013e6110d0565b606091505b507f878358802301ac1f0e23e8ed16d4ab85e7fb999aef9e41643301346986421bf96110fb876104f4565b8584846040518085815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561114d578181015183820152602001611135565b50505050905090810190601f16801561117a5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1506111d9565b7f16abce12916e67b821a9cdabe7103d806d6f4280a69d5830925b3e34c83f52a86111ba866104f4565b6040805191825260208201869052818101849052519081900360600190a15b505050505050565b6000816104e584670de0b6b3a764000061050a565b336000908152602081905260409020546001146112445760405162461bcd60e51b815260040180806020018281038252602381526020018061139f6023913960400191505060405180910390fd5b816e7570646174655261746544656c617960881b14156112bd57600081116112b3576040805162461bcd60e51b815260206004820152601e60248201527f5049526174655365747465722f6e756c6c2d7570646174652d64656c61790000604482015290519081900360640190fd5b6002819055611319565b816a64656661756c744c65616b60a81b1415610a155760018111156113135760405162461bcd60e51b815260040180806020018281038252602181526020018061135d6021913960400191505060405180910390fd5b60038190555b604080518381526020810183905281517fac7c5c1afaef770ec56ac6268cd3f2fbb1035858ead2601d6553157c33036c3a929181900390910190a15050565b179056fe5049526174655365747465722f696e76616c69642d64656661756c742d6c65616b5049526174655365747465722f696e76616c69642d6f7261636c652d76616c75655049526174655365747465722f6163636f756e742d6e6f742d617574686f72697a65645049526174655365747465722f6d6f646966792d756e7265636f676e697a65642d706172616da2646970667358221220ed465aafb9a8fba6b1987565e7f97fa6cf6dae083fc27a5d0ed0b2cd21b9ced764736f6c63430006070033d91f38cf03346b5dc15fb60f9076f866295231ad3c3841a1051f8443f25170d10000000000000000000000004ed9c0dca0479bc64d8f4eb3007126d5791f7851000000000000000000000000d52da90c20c4610fef8faade2a1281ffa54eb6fb00000000000000000000000012a5e1c81b10b264a575930aeae80681ddf595fe0000000000000000000000000564aecea06a74caa67a4c4c37087851eef56c290000000000000000000000000000000000000000000000000000000000005460
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101c45760003560e01c806363c9f725116100f9578063d6e882dc11610097578063f435899f11610071578063f435899f14610458578063f74826bb14610460578063f752fdc314610486578063fe4f5890146104a9576101c4565b8063d6e882dc14610404578063dd2d2a121461042d578063ddf0b81314610450576101c4565b80636a146024116100d35780636a146024146103ab57806394f3f81d146103b3578063a0871637146103d9578063c8f33c91146103fc576101c4565b806363c9f7251461036f578063660e16c3146103775780636614f0101461037f576101c4565b8063448a2638116101665780634faf61ab116101405780634faf61ab1461031b57806354f363a314610323578063552033c41461034657806363ac7ca71461034e576101c4565b8063448a2638146102d257806346f3e81c146102f65780634a8d632c14610313576101c4565b806324ba5884116101a257806324ba58841461023e57806335b28153146102645780633c8bb3e61461028c5780633ef5e445146102af576101c4565b8063056640b7146101c957806310213447146101fe578063165c4a161461021b575b600080fd5b6101ec600480360360408110156101df57600080fd5b50803590602001356104cc565b60408051918252519081900360200190f35b6101ec6004803603602081101561021457600080fd5b50356104f4565b6101ec6004803603604081101561023157600080fd5b508035906020013561050a565b6101ec6004803603602081101561025457600080fd5b50356001600160a01b031661056f565b61028a6004803603602081101561027a57600080fd5b50356001600160a01b0316610581565b005b6101ec600480360360408110156102a257600080fd5b5080359060200135610621565b6101ec600480360360408110156102c557600080fd5b5080359060200135610636565b6102da61068e565b604080516001600160a01b039092168252519081900360200190f35b6101ec6004803603602081101561030c57600080fd5b503561069d565b6102da6106b5565b6102da6106c4565b6101ec6004803603604081101561033957600080fd5b50803590602001356106d3565b6101ec610724565b610356610734565b6040805192835260208301919091528051918290030190f35b6101ec610820565b6101ec610826565b61028a6004803603604081101561039557600080fd5b50803590602001356001600160a01b031661089c565b6101ec610a93565b61028a600480360360208110156103c957600080fd5b50356001600160a01b0316610a9f565b6101ec600480360360408110156103ef57600080fd5b5080359060200135610b3e565b6101ec610b57565b6101ec6004803603606081101561041a57600080fd5b5080359060208101359060400135610b5d565b6101ec6004803603604081101561044357600080fd5b5080359060200135610c1b565b6101ec610c34565b6102da610c3a565b61028a6004803603602081101561047657600080fd5b50356001600160a01b0316610c49565b6101ec6004803603604081101561049c57600080fd5b50803590602001356111e1565b61028a600480360360408110156104bf57600080fd5b50803590602001356111f6565b60006b033b2e3c9fd0803ce80000006104e5848461050a565b816104ec57fe5b049392505050565b600061050482633b9aca0061050a565b92915050565b60008115806105255750508082028282828161052257fe5b04145b610504576040805162461bcd60e51b815260206004820152601660248201527575696e742d75696e742d6d756c2d6f766572666c6f7760501b604482015290519081900360640190fd5b60006020819052908152604090205481565b336000908152602081905260409020546001146105cf5760405162461bcd60e51b815260040180806020018281038252602381526020018061139f6023913960400191505060405180910390fd5b6001600160a01b0381166000818152602081815260409182902060019055815192835290517f599a298163e1678bb1c676052a8930bf0b8a1261ed6e01b8a2391e55f70001029281900390910190a150565b6000670de0b6b3a76400006104e5848461050a565b80820382811115610504576040805162461bcd60e51b815260206004820152601760248201527f75696e742d75696e742d7375622d756e646572666c6f77000000000000000000604482015290519081900360640190fd5b6007546001600160a01b031681565b6000610504826b033b2e3c9fd0803ce800000061050a565b6004546001600160a01b031681565b6005546001600160a01b031681565b81810182811015610504576040805162461bcd60e51b815260206004820152601660248201527575696e742d75696e742d6164642d6f766572666c6f7760501b604482015290519081900360640190fd5b6b033b2e3c9fd0803ce800000081565b60048054604080516309fa15b560e31b8152815160009485946001600160a01b031693634fd0ada89380830193919290829003018186803b15801561077857600080fd5b505afa15801561078c573d6000803e3d6000fd5b505050506040513d60408110156107a257600080fd5b505160055460408051630316dd2360e61b815290519294506001600160a01b039091169163c5b748c0916004808201926020929091908290030181600087803b1580156107ee57600080fd5b505af1158015610802573d6000803e3d6000fd5b505050506040513d602081101561081857600080fd5b505191929050565b60025481565b60048054604080516309fa15b560e31b8152815160009485946001600160a01b031693634fd0ada89380830193919290829003018186803b15801561086a57600080fd5b505afa15801561087e573d6000803e3d6000fd5b505050506040513d604081101561089457600080fd5b505191505090565b336000908152602081905260409020546001146108ea5760405162461bcd60e51b815260040180806020018281038252602381526020018061139f6023913960400191505060405180910390fd5b6001600160a01b03811661093e576040805162461bcd60e51b81526020600482015260166024820152752824a930ba32a9b2ba3a32b917b73ab63616b0b2323960511b604482015290519081900360640190fd5b81631bdc98db60e21b141561096d57600480546001600160a01b0319166001600160a01b038316179055610a4c565b816c37b930b1b632a932b630bcb2b960991b14156109a557600580546001600160a01b0319166001600160a01b038316179055610a4c565b816c39b2ba3a32b92932b630bcb2b960991b14156109dd57600680546001600160a01b0319166001600160a01b038316179055610a4c565b816c3834b221b0b631bab630ba37b960991b1415610a1557600780546001600160a01b0319166001600160a01b038316179055610a4c565b60405162461bcd60e51b81526004018080602001828103825260268152602001806113c26026913960400191505060405180910390fd5b604080518381526001600160a01b038316602082015281517fd91f38cf03346b5dc15fb60f9076f866295231ad3c3841a1051f8443f25170d1929181900390910190a15050565b670de0b6b3a764000081565b33600090815260208190526040902054600114610aed5760405162461bcd60e51b815260040180806020018281038252602381526020018061139f6023913960400191505060405180910390fd5b6001600160a01b03811660008181526020818152604080832092909255815192835290517f8834a87e641e9716be4f34527af5d23e11624f1ddeefede6ad75a9acfc31b9039281900390910190a150565b6000816104e5846b033b2e3c9fd0803ce800000061050a565b60015481565b6000838015610bfd57600184168015610b7857859250610b7c565b8392505b50600283046002850494505b8415610bf7578586028687820414610b9f57600080fd5b81810181811015610baf57600080fd5b8590049650506001851615610bec578583028387820414158715151615610bd557600080fd5b81810181811015610be557600080fd5b8590049350505b600285049450610b88565b50610c13565b838015610c0d5760009250610c11565b8392505b505b509392505050565b600081831115610c2b5781610c2d565b825b9392505050565b60035481565b6006546001600160a01b031681565b6001600160a01b038116610ca4576040805162461bcd60e51b815260206004820152601e60248201527f5049526174655365747465722f6e756c6c2d6665652d72656365697665720000604482015290519081900360640190fd5b610cc3600254610cb642600154610636565b1015600154600014611358565b610d0d576040805162461bcd60e51b81526020600482015260166024820152755049526174655365747465722f776169742d6d6f726560501b604482015290519081900360640190fd5b60048054604080516309fa15b560e31b8152815160009485946001600160a01b031693634fd0ada89380830193919290829003018186803b158015610d5157600080fd5b505afa158015610d65573d6000803e3d6000fd5b505050506040513d6040811015610d7b57600080fd5b508051602090910151909250905080610dc55760405162461bcd60e51b815260040180806020018281038252602181526020018061137e6021913960400191505060405180910390fd5b60008211610e1a576040805162461bcd60e51b815260206004820152601760248201527f5049526174655365747465722f6e756c6c2d7072696365000000000000000000604482015290519081900360640190fd5b60055460408051630316dd2360e61b815290516000926001600160a01b03169163c5b748c091600480830192602092919082900301818787803b158015610e6057600080fd5b505af1158015610e74573d6000803e3d6000fd5b505050506040513d6020811015610e8a57600080fd5b5051600354909150600090600114610f965760075460408051630be3617360e31b81529051610f91926001600160a01b031691635f1b0b98916004808301926020929190829003018186803b158015610ee257600080fd5b505afa158015610ef6573d6000803e3d6000fd5b505050506040513d6020811015610f0c57600080fd5b505160075460408051636e3126ef60e01b815290516001600160a01b0390921691636e3126ef91600480820192602092909190829003018186803b158015610f5357600080fd5b505afa158015610f67573d6000803e3d6000fd5b505050506040513d6020811015610f7d57600080fd5b50516b033b2e3c9fd0803ce8000000610b5d565b610fa4565b6b033b2e3c9fd0803ce80000005b600754604080516338e3899760e11b815260048101889052602481018690526044810184905290519293506000926001600160a01b03909216916371c7132e9160648082019260209290919082900301818787803b15801561100557600080fd5b505af1158015611019573d6000803e3d6000fd5b505050506040513d602081101561102f57600080fd5b505142600155600654604080516359426fad60e01b8152600481018490526001600160a01b038a8116602483015291519394509116916359426fad9160448082019260009290919082900301818387803b15801561108c57600080fd5b505af192505050801561109d575060015b611190573d8080156110cb576040519150601f19603f3d011682016040523d82523d6000602084013e6110d0565b606091505b507f878358802301ac1f0e23e8ed16d4ab85e7fb999aef9e41643301346986421bf96110fb876104f4565b8584846040518085815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561114d578181015183820152602001611135565b50505050905090810190601f16801561117a5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1506111d9565b7f16abce12916e67b821a9cdabe7103d806d6f4280a69d5830925b3e34c83f52a86111ba866104f4565b6040805191825260208201869052818101849052519081900360600190a15b505050505050565b6000816104e584670de0b6b3a764000061050a565b336000908152602081905260409020546001146112445760405162461bcd60e51b815260040180806020018281038252602381526020018061139f6023913960400191505060405180910390fd5b816e7570646174655261746544656c617960881b14156112bd57600081116112b3576040805162461bcd60e51b815260206004820152601e60248201527f5049526174655365747465722f6e756c6c2d7570646174652d64656c61790000604482015290519081900360640190fd5b6002819055611319565b816a64656661756c744c65616b60a81b1415610a155760018111156113135760405162461bcd60e51b815260040180806020018281038252602181526020018061135d6021913960400191505060405180910390fd5b60038190555b604080518381526020810183905281517fac7c5c1afaef770ec56ac6268cd3f2fbb1035858ead2601d6553157c33036c3a929181900390910190a15050565b179056fe5049526174655365747465722f696e76616c69642d64656661756c742d6c65616b5049526174655365747465722f696e76616c69642d6f7261636c652d76616c75655049526174655365747465722f6163636f756e742d6e6f742d617574686f72697a65645049526174655365747465722f6d6f646966792d756e7265636f676e697a65642d706172616da2646970667358221220ed465aafb9a8fba6b1987565e7f97fa6cf6dae083fc27a5d0ed0b2cd21b9ced764736f6c63430006070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000004ed9c0dca0479bc64d8f4eb3007126d5791f7851000000000000000000000000d52da90c20c4610fef8faade2a1281ffa54eb6fb00000000000000000000000012a5e1c81b10b264a575930aeae80681ddf595fe0000000000000000000000000564aecea06a74caa67a4c4c37087851eef56c290000000000000000000000000000000000000000000000000000000000005460
-----Decoded View---------------
Arg [0] : oracleRelayer_ (address): 0x4ed9C0dCa0479bC64d8f4EB3007126D5791f7851
Arg [1] : setterRelayer_ (address): 0xD52Da90c20c4610fEf8faade2a1281FFa54eB6fB
Arg [2] : orcl_ (address): 0x12A5E1c81B10B264A575930aEae80681DDF595fe
Arg [3] : pidCalculator_ (address): 0x0564AeCEa06A74CaA67a4C4c37087851eEf56C29
Arg [4] : updateRateDelay_ (uint256): 21600
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000004ed9c0dca0479bc64d8f4eb3007126d5791f7851
Arg [1] : 000000000000000000000000d52da90c20c4610fef8faade2a1281ffa54eb6fb
Arg [2] : 00000000000000000000000012a5e1c81b10b264a575930aeae80681ddf595fe
Arg [3] : 0000000000000000000000000564aecea06a74caa67a4c4c37087851eef56c29
Arg [4] : 0000000000000000000000000000000000000000000000000000000000005460
Deployed Bytecode Sourcemap
2872:7769:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2872:7769:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;900:107:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;900:107:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;142:93;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;142:93:0;;:::i;747:147::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;747:147:0;;;;;;;:::i;2933:51::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2933:51:0;-1:-1:-1;;;;;2933:51:0;;:::i;3094:156::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;3094:156:0;-1:-1:-1;;;;;3094:156:0;;:::i;:::-;;1235:107;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1235:107:0;;;;;;;:::i;597:144::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;597:144:0;;;;;;;:::i;4542:46::-;;;:::i;:::-;;;;-1:-1:-1;;;;;4542:46:0;;;;;;;;;;;;;;241:94;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;241:94:0;;:::i;4208:37::-;;;:::i;4311:46::-;;;:::i;448:143::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;448:143:0;;;;;;;:::i;50:38::-;;;:::i;10409:229::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3942:30;;;:::i;10149:160::-;;;:::i;6743:641::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;6743:641:0;;;;;;-1:-1:-1;;;;;6743:641:0;;:::i;95:38::-;;;:::i;3369:162::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;3369:162:0;-1:-1:-1;;;;;3369:162:0;;:::i;1013:105::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1013:105:0;;;;;;;:::i;3839:29::-;;;:::i;1348:1058::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1348:1058:0;;;;;;;;;;;;:::i;341:101::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;341:101:0;;;;;;;:::i;4059:26::-;;;:::i;4446:46::-;;;:::i;8371:1664::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;8371:1664:0;-1:-1:-1;;;;;8371:1664:0;;:::i;1124:105::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1124:105:0;;;;;;;:::i;7533:544::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;7533:544:0;;;;;;;:::i;900:107::-;956:6;80:8;979:14;988:1;991;979:8;:14::i;:::-;:20;;;;;;;900:107;-1:-1:-1;;;900:107:0:o;142:93::-;184:6;207:20;216:1;219:7;207:8;:20::i;:::-;203:24;142:93;-1:-1:-1;;142:93:0:o;747:147::-;802:6;829;;;:30;;-1:-1:-1;;844:5:0;;;858:1;853;844:5;853:1;839:15;;;;;:20;829:30;821:65;;;;;-1:-1:-1;;;821:65:0;;;;;;;;;;;;-1:-1:-1;;;821:65:0;;;;;;;;;;;;;;2933:51;;;;;;;;;;;;;;:::o;3094:156::-;3684:10;3665:18;:30;;;;;;;;;;;3699:1;3665:35;3657:83;;;;-1:-1:-1;;;3657:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3170:27:0;::::1;:18;:27:::0;;;::::1;::::0;;;;;;;;3200:1:::1;3170:31:::0;;3217:25;;;;;;;::::1;::::0;;;;;;;;::::1;3094:156:::0;:::o;1235:107::-;1291:6;125:8;1314:14;1323:1;1326;1314:8;:14::i;597:144::-;675:5;;;699:6;;;;691:42;;;;;-1:-1:-1;;;691:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;4542:46;;;-1:-1:-1;;;;;4542:46:0;;:::o;241:94::-;283:6;306:21;315:1;318:8;306;:21::i;4208:37::-;;;-1:-1:-1;;;;;4208:37:0;;:::o;4311:46::-;;;-1:-1:-1;;;;;4311:46:0;;:::o;448:143::-;526:5;;;550:6;;;;542:41;;;;;-1:-1:-1;;;542:41:0;;;;;;;;;;;;-1:-1:-1;;;542:41:0;;;;;;;;;;;;;;50:38;80:8;50:38;:::o;10409:229::-;10542:4;;;:28;;;-1:-1:-1;;;10542:28:0;;;;10467:19;;;;-1:-1:-1;;;;;10542:4:0;;:26;;:28;;;;;;;;;;;;:4;:28;;;2:2:-1;;;;27:1;24;17:12;2:2;10542:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10542:28:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;10542:28:0;10599:13;;10542:28;10599:31;;-1:-1:-1;;;10599:31:0;;;;10542:28;;-1:-1:-1;;;;;;10599:13:0;;;;:29;;:31;;;;;10542:28;;10599:31;;;;;;;;:13;;:31;;;2:2:-1;;;;27:1;24;17:12;2:2;10599:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10599:31:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;10599:31:0;10409:229;;;-1:-1:-1;10409:229:0:o;3942:30::-;;;;:::o;10149:160::-;10244:4;;;:28;;;-1:-1:-1;;;10244:28:0;;;;10198:7;;;;-1:-1:-1;;;;;10244:4:0;;:26;;:28;;;;;;;;;;;;:4;:28;;;2:2:-1;;;;27:1;24;17:12;2:2;10244:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10244:28:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;10244:28:0;;-1:-1:-1;;10149:160:0;:::o;6743:641::-;3684:10;3665:18;:30;;;;;;;;;;;3699:1;3665:35;3657:83;;;;-1:-1:-1;;;3657:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6843:18:0;::::1;6835:53;;;::::0;;-1:-1:-1;;;6835:53:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;6835:53:0;;;;;;;;;;;;;::::1;;6903:9;-1:-1:-1::0;;;6903:19:0::1;6899:395;;;6924:4;:23:::0;;-1:-1:-1;;;;;;6924:23:0::1;-1:-1:-1::0;;;;;6924:23:0;::::1;;::::0;;6899:395:::1;;;6967:9;-1:-1:-1::0;;;6967:28:0::1;6963:331;;;6997:13;:39:::0;;-1:-1:-1;;;;;;6997:39:0::1;-1:-1:-1::0;;;;;6997:39:0;::::1;;::::0;;6963:331:::1;;;7056:9;-1:-1:-1::0;;;7056:28:0::1;7052:242;;;7086:13;:35:::0;;-1:-1:-1;;;;;;7086:35:0::1;-1:-1:-1::0;;;;;7086:35:0;::::1;;::::0;;7052:242:::1;;;7141:9;-1:-1:-1::0;;;7141:28:0::1;7137:157;;;7184:13;:35:::0;;-1:-1:-1;;;;;;7184:35:0::1;-1:-1:-1::0;;;;;7184:35:0;::::1;;::::0;;7137:157:::1;;;7246:48;;-1:-1:-1::0;;;7246:48:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7137:157;7310:66;::::0;;;;;-1:-1:-1;;;;;7310:66:0;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;;;;;;::::1;6743:641:::0;;:::o;95:38::-;125:8;95:38;:::o;3369:162::-;3684:10;3665:18;:30;;;;;;;;;;;3699:1;3665:35;3657:83;;;;-1:-1:-1;;;3657:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3448:27:0;::::1;3478:1;3448:27:::0;;;::::1;::::0;;;;;;;:31;;;;3495:28;;;;;;;::::1;::::0;;;;;;;;::::1;3369:162:::0;:::o;1013:105::-;1067:6;1109:1;1090:16;1099:1;80:8;1090;:16::i;3839:29::-;;;;:::o;1348:1058::-;1412:6;1462:1;1464:53;;;;1565:9;;;1575:20;;;;1611:1;1606:6;;1558:56;;1575:20;1589:4;1584:9;;1558:56;;1654:1;1648:4;1644:12;1710:1;1707;1703:9;1698:14;;1692:681;1715:1;1692:681;;;1775:1;1772;1768:9;1824:1;1820;1816:2;1812:10;1809:17;1799:2;;1839:1;1837;1830:11;1799:2;1888:4;1884:2;1880:13;1930:2;1921:7;1918:15;1915:2;;;1945:1;1943;1936:11;1915:2;1976:18;;;;-1:-1:-1;;2019:8:0;;;2016:2;;;2072:1;2069;2065:9;2148:1;2144;2140:2;2136:10;2133:17;2126:25;2121:1;2114:9;2107:17;2103:49;2100:2;;;2164:1;2162;2155:11;2100:2;2217:4;2213:2;2209:13;2263:2;2254:7;2251:15;2248:2;;;2278:1;2276;2269:11;2248:2;2313:18;;;;-1:-1:-1;;2016:2:0;1730:1;1728;1724:8;1719:13;;1692:681;;;1696:18;1455:933;;1464:53;1479:1;1481:18;;;;1514:1;1509:6;;1472:44;;1481:18;1494:4;1489:9;;1472:44;;1455:933;;1440:959;;;;;:::o;341:101::-;395:6;424:1;419;:6;;418:16;;433:1;418:16;;;429:1;418:16;414:20;341:101;-1:-1:-1;;;341:101:0:o;4059:26::-;;;;:::o;4446:46::-;;;-1:-1:-1;;;;;4446:46:0;;:::o;8371:1664::-;-1:-1:-1;;;;;8486:25:0;;8478:68;;;;;-1:-1:-1;;;8478:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8603:77;8643:15;;8610:29;8619:3;8624:14;;8610:8;:29::i;:::-;:48;;8660:14;;8678:1;8660:19;8603:6;:77::i;:::-;8595:112;;;;;-1:-1:-1;;;8595:112:0;;;;;;;;;;;;-1:-1:-1;;;8595:112:0;;;;;;;;;;;;;;;8797:4;;;:28;;;-1:-1:-1;;;8797:28:0;;;;8754:19;;;;-1:-1:-1;;;;;8797:4:0;;:26;;:28;;;;;;;;;;;;:4;:28;;;2:2:-1;;;;27:1;24;17:12;2:2;8797:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8797:28:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;8797:28:0;;;;;;;;;-1:-1:-1;8797:28:0;-1:-1:-1;8797:28:0;8874:59;;;;-1:-1:-1;;;8874:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9003:1;8989:11;:15;8981:51;;;;;-1:-1:-1;;;8981:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9110:13;;:31;;;-1:-1:-1;;;9110:31:0;;;;9087:20;;-1:-1:-1;;;;;9110:13:0;;:29;;:31;;;;;;;;;;;;;;9087:20;9110:13;:31;;;2:2:-1;;;;27:1;24;17:12;2:2;9110:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9110:31:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;9110:31:0;9205:11;;9110:31;;-1:-1:-1;9183:13:0;;9220:1;9205:16;9204:81;;9238:13;;:20;;;-1:-1:-1;;;9238:20:0;;;;9231:54;;-1:-1:-1;;;;;9238:13:0;;:18;;:20;;;;;;;;;;;;;;:13;:20;;;2:2:-1;;;;27:1;24;17:12;2:2;9238:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9238:20:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;9238:20:0;9260:13;;:19;;;-1:-1:-1;;;9260:19:0;;;;-1:-1:-1;;;;;9260:13:0;;;;:17;;:19;;;;;9238:20;;9260:19;;;;;;;;:13;:19;;;2:2:-1;;;;27:1;24;17:12;2:2;9260:19:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9260:19:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;9260:19:0;80:8;9231:6;:54::i;:::-;9204:81;;;80:8;9204:81;9317:13;;:112;;;-1:-1:-1;;;9317:112:0;;;;;;;;;;;;;;;;;;;;;;9183:102;;-1:-1:-1;9296:18:0;;-1:-1:-1;;;;;9317:13:0;;;;:25;;:112;;;;;;;;;;;;;;;9296:18;9317:13;:112;;;2:2:-1;;;;27:1;24;17:12;2:2;9317:112:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9317:112:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;9317:112:0;9503:3;9486:14;:20;9574:13;;:48;;;-1:-1:-1;;;9574:48:0;;;;;;;;-1:-1:-1;;;;;9574:48:0;;;;;;;;;9317:112;;-1:-1:-1;9574:13:0;;;:23;;:48;;;;;:13;;:48;;;;;;;;:13;;:48;;;2:2:-1;;;;27:1;24;17:12;2:2;9574:48:0;;;;;;;;;;;;;;9570:458;;;;14:27:-1;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;9866:150:0;9905:16;9909:11;9905:3;:16::i;:::-;9936:15;9966:10;9991:12;9866:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;9866:150:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9815:213;9570:458;;;9674:119;9709:16;9713:11;9709:3;:16::i;:::-;9674:119;;;;;;;;;;;;;;;;;;;;;;;;;;;9570:458;8371:1664;;;;;;:::o;1124:105::-;1178:6;1220:1;1201:16;1210:1;125:8;1201;:16::i;7533:544::-;3684:10;3665:18;:30;;;;;;;;;;;3699:1;3665:35;3657:83;;;;-1:-1:-1;;;3657:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7628:9:::1;-1:-1:-1::0;;;7628:30:0::1;7624:364;;;7687:1;7681:3;:7;7673:50;;;::::0;;-1:-1:-1;;;7673:50:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;7736:15;:21:::0;;;7624:364:::1;;;7788:9;-1:-1:-1::0;;;7788:26:0::1;7784:204;;;7844:1;7837:3;:8;;7829:54;;;;-1:-1:-1::0;;;7829:54:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7896:11;:17:::0;;;7784:204:::1;8004:65;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;7533:544:::0;;:::o;6425:105::-;6514:8;;6507:16::o
Swarm Source
ipfs://ed465aafb9a8fba6b1987565e7f97fa6cf6dae083fc27a5d0ed0b2cd21b9ced7
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.