Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 9,374 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Update Result | 21275841 | 1 hr ago | IN | 0 ETH | 0.00380547 | ||||
Update Result | 21274648 | 5 hrs ago | IN | 0 ETH | 0.00409142 | ||||
Update Result | 21273453 | 9 hrs ago | IN | 0 ETH | 0.00403129 | ||||
Update Result | 21272256 | 13 hrs ago | IN | 0 ETH | 0.00406596 | ||||
Update Result | 21271064 | 17 hrs ago | IN | 0 ETH | 0.00395787 | ||||
Update Result | 21269871 | 21 hrs ago | IN | 0 ETH | 0.00389332 | ||||
Update Result | 21268676 | 25 hrs ago | IN | 0 ETH | 0.00387569 | ||||
Update Result | 21267486 | 29 hrs ago | IN | 0 ETH | 0.00384328 | ||||
Update Result | 21266297 | 33 hrs ago | IN | 0 ETH | 0.00389286 | ||||
Update Result | 21265107 | 37 hrs ago | IN | 0 ETH | 0.00387468 | ||||
Update Result | 21263914 | 41 hrs ago | IN | 0 ETH | 0.00386108 | ||||
Update Result | 21262719 | 45 hrs ago | IN | 0 ETH | 0.00395548 | ||||
Update Result | 21261521 | 2 days ago | IN | 0 ETH | 0.00397086 | ||||
Update Result | 21260325 | 2 days ago | IN | 0 ETH | 0.00397775 | ||||
Update Result | 21259133 | 2 days ago | IN | 0 ETH | 0.0040206 | ||||
Update Result | 21257936 | 2 days ago | IN | 0 ETH | 0.0039766 | ||||
Update Result | 21256745 | 2 days ago | IN | 0 ETH | 0.00385285 | ||||
Update Result | 21255551 | 2 days ago | IN | 0 ETH | 0.00385827 | ||||
Update Result | 21254353 | 3 days ago | IN | 0 ETH | 0.00385823 | ||||
Update Result | 21253158 | 3 days ago | IN | 0 ETH | 0.00381382 | ||||
Update Result | 21251968 | 3 days ago | IN | 0 ETH | 0.0039208 | ||||
Update Result | 21250775 | 3 days ago | IN | 0 ETH | 0.00395033 | ||||
Update Result | 21249578 | 3 days ago | IN | 0 ETH | 0.00388584 | ||||
Update Result | 21248380 | 3 days ago | IN | 0 ETH | 0.00389805 | ||||
Update Result | 21247185 | 4 days ago | IN | 0 ETH | 0.00391913 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
12371493 | 1302 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Name:
ExternallyFundedOSM
Compiler Version
v0.6.7+commit.b8d736ae
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-05-05 */ pragma solidity 0.6.7; abstract contract DSValueLike { function getResultWithValidity() virtual external view returns (uint256, bool); } abstract contract FSMWrapperLike { function renumerateCaller(address) virtual external; } contract OSM { // --- 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, "OSM/account-not-authorized"); _; } // --- Stop --- uint256 public stopped; modifier stoppable { require(stopped == 0, "OSM/is-stopped"); _; } // --- Variables --- address public priceSource; uint16 constant ONE_HOUR = uint16(3600); uint16 public updateDelay = ONE_HOUR; uint64 public lastUpdateTime; // --- Structs --- struct Feed { uint128 value; uint128 isValid; } Feed currentFeed; Feed nextFeed; // --- Events --- event AddAuthorization(address account); event RemoveAuthorization(address account); event ModifyParameters(bytes32 parameter, uint256 val); event ModifyParameters(bytes32 parameter, address val); event Start(); event Stop(); event ChangePriceSource(address priceSource); event ChangeDelay(uint16 delay); event RestartValue(); event UpdateResult(uint256 newMedian, uint256 lastUpdateTime); constructor (address priceSource_) public { authorizedAccounts[msg.sender] = 1; priceSource = priceSource_; if (priceSource != address(0)) { (uint256 priceFeedValue, bool hasValidValue) = getPriceSourceUpdate(); if (hasValidValue) { nextFeed = Feed(uint128(uint(priceFeedValue)), 1); currentFeed = nextFeed; lastUpdateTime = latestUpdateTime(currentTime()); emit UpdateResult(uint(currentFeed.value), lastUpdateTime); } } emit AddAuthorization(msg.sender); emit ChangePriceSource(priceSource); } // --- Math --- function addition(uint64 x, uint64 y) internal pure returns (uint64 z) { z = x + y; require(z >= x); } // --- Core Logic --- /* * @notify Stop the OSM */ function stop() external isAuthorized { stopped = 1; emit Stop(); } /* * @notify Start the OSM */ function start() external isAuthorized { stopped = 0; emit Start(); } /* * @notify Change the oracle from which the OSM reads * @param priceSource_ The address of the oracle from which the OSM reads */ function changePriceSource(address priceSource_) external isAuthorized { priceSource = priceSource_; emit ChangePriceSource(priceSource); } /* * @notify Helper that returns the current block timestamp */ function currentTime() internal view returns (uint) { return block.timestamp; } /* * @notify Return the latest update time * @param timestamp Custom reference timestamp to determine the latest update time from */ function latestUpdateTime(uint timestamp) internal view returns (uint64) { require(updateDelay != 0, "OSM/update-delay-is-zero"); return uint64(timestamp - (timestamp % updateDelay)); } /* * @notify Change the delay between updates * @param delay The new delay */ function changeDelay(uint16 delay) external isAuthorized { require(delay > 0, "OSM/delay-is-zero"); updateDelay = delay; emit ChangeDelay(updateDelay); } /* * @notify Restart/set to zero the feeds stored in the OSM */ function restartValue() external isAuthorized { currentFeed = nextFeed = Feed(0, 0); stopped = 1; emit RestartValue(); } /* * @notify View function that returns whether the delay between calls has been passed */ function passedDelay() public view returns (bool ok) { return currentTime() >= uint(addition(lastUpdateTime, uint64(updateDelay))); } /* * @notify Update the price feeds inside the OSM */ function updateResult() virtual external stoppable { // Check if the delay passed require(passedDelay(), "OSM/not-passed"); // Read the price from the median (uint256 priceFeedValue, bool hasValidValue) = getPriceSourceUpdate(); // If the value is valid, update storage if (hasValidValue) { // Update state currentFeed = nextFeed; nextFeed = Feed(uint128(uint(priceFeedValue)), 1); lastUpdateTime = latestUpdateTime(currentTime()); // Emit event emit UpdateResult(uint(currentFeed.value), lastUpdateTime); } } // --- Getters --- /* * @notify Internal helper that reads a price and its validity from the priceSource */ function getPriceSourceUpdate() internal view returns (uint256, bool) { try DSValueLike(priceSource).getResultWithValidity() returns (uint256 priceFeedValue, bool hasValidValue) { return (priceFeedValue, hasValidValue); } catch(bytes memory) { return (0, false); } } /* * @notify Return the current feed value and its validity */ function getResultWithValidity() external view returns (uint256,bool) { return (uint(currentFeed.value), currentFeed.isValid == 1); } /* * @notify Return the next feed's value and its validity */ function getNextResultWithValidity() external view returns (uint256,bool) { return (nextFeed.value, nextFeed.isValid == 1); } /* * @notify Return the current feed's value only if it's valid, otherwise revert */ function read() external view returns (uint256) { require(currentFeed.isValid == 1, "OSM/no-current-value"); return currentFeed.value; } } contract ExternallyFundedOSM is OSM { // --- Variables --- FSMWrapperLike public fsmWrapper; // --- Evemts --- event FailRenumerateCaller(address wrapper, address caller); constructor (address priceSource_) public OSM(priceSource_) {} // --- Administration --- /* * @notify Modify an address parameter * @param parameter The parameter name * @param val The new value for the parameter */ function modifyParameters(bytes32 parameter, address val) external isAuthorized { if (parameter == "fsmWrapper") { require(val != address(0), "ExternallyFundedOSM/invalid-fsm-wrapper"); fsmWrapper = FSMWrapperLike(val); } else revert("ExternallyFundedOSM/modify-unrecognized-param"); emit ModifyParameters(parameter, val); } /* * @notify Update the price feeds inside the OSM */ function updateResult() override external stoppable { // Check if the delay passed require(passedDelay(), "ExternallyFundedOSM/not-passed"); // Check that the wrapper is set require(address(fsmWrapper) != address(0), "ExternallyFundedOSM/null-wrapper"); // Read the price from the median (uint256 priceFeedValue, bool hasValidValue) = getPriceSourceUpdate(); // If the value is valid, update storage if (hasValidValue) { // Update state currentFeed = nextFeed; nextFeed = Feed(uint128(uint(priceFeedValue)), 1); lastUpdateTime = latestUpdateTime(currentTime()); // Emit event emit UpdateResult(uint(currentFeed.value), lastUpdateTime); // Pay the caller try fsmWrapper.renumerateCaller(msg.sender) {} catch(bytes memory revertReason) { emit FailRenumerateCaller(address(fsmWrapper), msg.sender); } } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"priceSource_","type":"address"}],"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":"uint16","name":"delay","type":"uint16"}],"name":"ChangeDelay","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"priceSource","type":"address"}],"name":"ChangePriceSource","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wrapper","type":"address"},{"indexed":false,"internalType":"address","name":"caller","type":"address"}],"name":"FailRenumerateCaller","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":"bytes32","name":"parameter","type":"bytes32"},{"indexed":false,"internalType":"address","name":"val","type":"address"}],"name":"ModifyParameters","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"RemoveAuthorization","type":"event"},{"anonymous":false,"inputs":[],"name":"RestartValue","type":"event"},{"anonymous":false,"inputs":[],"name":"Start","type":"event"},{"anonymous":false,"inputs":[],"name":"Stop","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMedian","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lastUpdateTime","type":"uint256"}],"name":"UpdateResult","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addAuthorization","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"authorizedAccounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"delay","type":"uint16"}],"name":"changeDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"priceSource_","type":"address"}],"name":"changePriceSource","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fsmWrapper","outputs":[{"internalType":"contract FSMWrapperLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNextResultWithValidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getResultWithValidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastUpdateTime","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"parameter","type":"bytes32"},{"internalType":"address","name":"val","type":"address"}],"name":"modifyParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"passedDelay","outputs":[{"internalType":"bool","name":"ok","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceSource","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"read","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeAuthorization","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"restartValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"start","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopped","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updateDelay","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updateResult","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526002805461ffff60a01b191660e160a41b1790553480156200002557600080fd5b506040516200129a3803806200129a833981810160405260208110156200004b57600080fd5b505133600090815260208190526040902060019055600280546001600160a01b0319166001600160a01b03808416919091179182905582911615620001ae57600080620000a06001600160e01b036200022816565b915091508015620001ab57604080518082019091526001600160801b038084168083526001602090930192909252600480546001600160801b03199081169093178216600160801b90811791829055600380548284048516909202919094169183169190911790911617905562000132620001236001600160e01b03620002ec16565b6001600160e01b03620002f016565b60028054600160b01b600160f01b031916600160b01b6001600160401b0393841681029190911791829055600354604080516001600160801b03909216825291909204909216602082015281517ff85e44c6c3597d176b8d59bfbf500dfdb2badfc8cf91e6d960b16583a5807e48929181900390910190a15b50505b6040805133815290517f599a298163e1678bb1c676052a8930bf0b8a1261ed6e01b8a2391e55f70001029181900360200190a1600254604080516001600160a01b039092168252517fe64aaa084ff9fb9651f314c5d25888701090b34db4f4809b517e863c62bd85089181900360200190a1505062000373565b600254604080516309fa15b560e31b8152815160009384936001600160a01b0390911692634fd0ada89260048083019392829003018186803b1580156200026e57600080fd5b505afa9250505080156200029c57506040513d60408110156200029057600080fd5b50805160209091015160015b620002e2573d808015620002cd576040519150601f19603f3d011682016040523d82523d6000602084013e620002d2565b606091505b5060009250829150620002e89050565b90925090505b9091565b4290565b600254600090600160a01b900461ffff1662000353576040805162461bcd60e51b815260206004820152601860248201527f4f534d2f7570646174652d64656c61792d69732d7a65726f0000000000000000604482015290519081900360640190fd5b600254600160a01b900461ffff1682816200036a57fe5b06909103919050565b610f1780620003836000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806357de26a4116100ad57806381db59171161007157806381db5917146102a157806394f3f81d146102a9578063be9a6555146102cf578063c8f33c91146102d7578063ceedd63d146102fc57610121565b806357de26a41461024157806363bfa88b146102495780636614f0101461026557806375f12b211461029157806380ebb08e1461029957610121565b806335b28153116100f457806335b28153146101ad5780633fcdfe26146101d35780634f0a32de146101f95780634fd0ada81461021a578063554f94db1461022257610121565b806307da68f51461012657806320531bc91461013057806324ba5884146101545780632b9c7ee31461018c575b600080fd5b61012e610304565b005b610138610385565b604080516001600160a01b039092168252519081900360200190f35b61017a6004803603602081101561016a57600080fd5b50356001600160a01b0316610394565b60408051918252519081900360200190f35b61012e600480360360208110156101a257600080fd5b503561ffff166103a6565b61012e600480360360208110156101c357600080fd5b50356001600160a01b03166104a3565b61012e600480360360208110156101e957600080fd5b50356001600160a01b0316610547565b6102016105f3565b6040805192835290151560208301528051918290030190f35b610201610612565b61022a610630565b6040805161ffff9092168252519081900360200190f35b61017a610641565b6102516106b2565b604080519115158252519081900360200190f35b61012e6004803603604081101561027b57600080fd5b50803590602001356001600160a01b03166106f7565b61017a610841565b61012e610847565b610138610b1f565b61012e600480360360208110156102bf57600080fd5b50356001600160a01b0316610b2e565b61012e610bd1565b6102df610c53565b6040805167ffffffffffffffff9092168252519081900360200190f35b61012e610c6a565b33600090815260208190526040902054600114610356576040805162461bcd60e51b815260206004820152601a6024820152600080516020610ec2833981519152604482015290519081900360640190fd5b600180556040517fbedf0f4abfe86d4ffad593d9607fe70e83ea706033d44d24b3b6283cf3fc4f6b90600090a1565b6002546001600160a01b031681565b60006020819052908152604090205481565b336000908152602081905260409020546001146103f8576040805162461bcd60e51b815260206004820152601a6024820152600080516020610ec2833981519152604482015290519081900360640190fd5b60008161ffff1611610445576040805162461bcd60e51b81526020600482015260116024820152704f534d2f64656c61792d69732d7a65726f60781b604482015290519081900360640190fd5b6002805461ffff808416600160a01b90810261ffff60a01b199093169290921792839055604080519290930416815290517fe5e55d7a00a8da3c2d2be2af849b5680612dc299cf26e12a879220d5f42ea2319181900360200190a150565b336000908152602081905260409020546001146104f5576040805162461bcd60e51b815260206004820152601a6024820152600080516020610ec2833981519152604482015290519081900360640190fd5b6001600160a01b0381166000818152602081815260409182902060019055815192835290517f599a298163e1678bb1c676052a8930bf0b8a1261ed6e01b8a2391e55f70001029281900390910190a150565b33600090815260208190526040902054600114610599576040805162461bcd60e51b815260206004820152601a6024820152600080516020610ec2833981519152604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b03838116919091179182905560408051929091168252517fe64aaa084ff9fb9651f314c5d25888701090b34db4f4809b517e863c62bd8508916020908290030190a150565b6004546001600160801b0380821691600160801b9004166001145b9091565b6003546001600160801b0380821691600160801b9004166001149091565b600254600160a01b900461ffff1681565b600354600090600160801b90046001600160801b03166001146106a2576040805162461bcd60e51b81526020600482015260146024820152734f534d2f6e6f2d63757272656e742d76616c756560601b604482015290519081900360640190fd5b506003546001600160801b031690565b6002546000906106de90600160b01b810467ffffffffffffffff1690600160a01b900461ffff16610d08565b67ffffffffffffffff166106f0610d2b565b1015905090565b33600090815260208190526040902054600114610749576040805162461bcd60e51b815260206004820152601a6024820152600080516020610ec2833981519152604482015290519081900360640190fd5b81693339b6abb930b83832b960b11b14156107c3576001600160a01b0381166107a35760405162461bcd60e51b8152600401808060200182810382526027815260200180610e6e6027913960400191505060405180910390fd5b600580546001600160a01b0319166001600160a01b0383161790556107fa565b60405162461bcd60e51b815260040180806020018281038252602d815260200180610e95602d913960400191505060405180910390fd5b604080518381526001600160a01b038316602082015281517fd91f38cf03346b5dc15fb60f9076f866295231ad3c3841a1051f8443f25170d1929181900390910190a15050565b60015481565b6001541561088d576040805162461bcd60e51b815260206004820152600e60248201526d13d4d34bda5ccb5cdd1bdc1c195960921b604482015290519081900360640190fd5b6108956106b2565b6108e6576040805162461bcd60e51b815260206004820152601e60248201527f45787465726e616c6c7946756e6465644f534d2f6e6f742d7061737365640000604482015290519081900360640190fd5b6005546001600160a01b0316610943576040805162461bcd60e51b815260206004820181905260248201527f45787465726e616c6c7946756e6465644f534d2f6e756c6c2d77726170706572604482015290519081900360640190fd5b60008061094e610d2f565b915091508015610b1b576004805460038054600160801b8084046001600160801b0390811682026fffffffffffffffffffffffffffffffff19938416828716178216179093556040805180820190915287841680825260016020909201919091529190931617161790556109c86109c3610d2b565b610dec565b6002805467ffffffffffffffff60b01b1916600160b01b67ffffffffffffffff93841681029190911791829055600354604080516001600160801b03909216825291909204909216602082015281517ff85e44c6c3597d176b8d59bfbf500dfdb2badfc8cf91e6d960b16583a5807e48929181900390910190a160055460408051632761f27b60e01b815233600482015290516001600160a01b0390921691632761f27b9160248082019260009290919082900301818387803b158015610a8e57600080fd5b505af1925050508015610a9f575060015b610b1b573d808015610acd576040519150601f19603f3d011682016040523d82523d6000602084013e610ad2565b606091505b50600554604080516001600160a01b03909216825233602083015280517f96957874bf643b6d75552ddf6e2f265e2c481209f5b12355e64caede7201b7409281900390910190a1505b5050565b6005546001600160a01b031681565b33600090815260208190526040902054600114610b80576040805162461bcd60e51b815260206004820152601a6024820152600080516020610ec2833981519152604482015290519081900360640190fd5b6001600160a01b03811660008181526020818152604080832092909255815192835290517f8834a87e641e9716be4f34527af5d23e11624f1ddeefede6ad75a9acfc31b9039281900390910190a150565b33600090815260208190526040902054600114610c23576040805162461bcd60e51b815260206004820152601a6024820152600080516020610ec2833981519152604482015290519081900360640190fd5b600060018190556040517f1b55ba3aa851a46be3b365aee5b5c140edd620d578922f3e8466d2cbd96f954b9190a1565b600254600160b01b900467ffffffffffffffff1681565b33600090815260208190526040902054600114610cbc576040805162461bcd60e51b815260206004820152601a6024820152600080516020610ec2833981519152604482015290519081900360640190fd5b60408051808201825260008082526020909101819052600481905560038190556001805590517f34cd470f8814066090f532fe3cb8158c5d974d7a01f4ada846dc9869e7e9d59a9190a1565b81810167ffffffffffffffff8084169082161015610d2557600080fd5b92915050565b4290565b600254604080516309fa15b560e31b8152815160009384936001600160a01b0390911692634fd0ada89260048083019392829003018186803b158015610d7457600080fd5b505afa925050508015610da057506040513d6040811015610d9457600080fd5b50805160209091015160015b610de2573d808015610dce576040519150601f19603f3d011682016040523d82523d6000602084013e610dd3565b606091505b506000925082915061060e9050565b909250905061060e565b600254600090600160a01b900461ffff16610e4e576040805162461bcd60e51b815260206004820152601860248201527f4f534d2f7570646174652d64656c61792d69732d7a65726f0000000000000000604482015290519081900360640190fd5b600254600160a01b900461ffff168281610e6457fe5b0690910391905056fe45787465726e616c6c7946756e6465644f534d2f696e76616c69642d66736d2d7772617070657245787465726e616c6c7946756e6465644f534d2f6d6f646966792d756e7265636f676e697a65642d706172616d4f534d2f6163636f756e742d6e6f742d617574686f72697a6564000000000000a2646970667358221220c37029ac5c5079c842a7074f37e4842ae016fe38f24aa0ba1b8b94f9befeee0a64736f6c63430006070033000000000000000000000000b825e25856bd98b3f2faf2aeb6cb8742b38c4025
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101215760003560e01c806357de26a4116100ad57806381db59171161007157806381db5917146102a157806394f3f81d146102a9578063be9a6555146102cf578063c8f33c91146102d7578063ceedd63d146102fc57610121565b806357de26a41461024157806363bfa88b146102495780636614f0101461026557806375f12b211461029157806380ebb08e1461029957610121565b806335b28153116100f457806335b28153146101ad5780633fcdfe26146101d35780634f0a32de146101f95780634fd0ada81461021a578063554f94db1461022257610121565b806307da68f51461012657806320531bc91461013057806324ba5884146101545780632b9c7ee31461018c575b600080fd5b61012e610304565b005b610138610385565b604080516001600160a01b039092168252519081900360200190f35b61017a6004803603602081101561016a57600080fd5b50356001600160a01b0316610394565b60408051918252519081900360200190f35b61012e600480360360208110156101a257600080fd5b503561ffff166103a6565b61012e600480360360208110156101c357600080fd5b50356001600160a01b03166104a3565b61012e600480360360208110156101e957600080fd5b50356001600160a01b0316610547565b6102016105f3565b6040805192835290151560208301528051918290030190f35b610201610612565b61022a610630565b6040805161ffff9092168252519081900360200190f35b61017a610641565b6102516106b2565b604080519115158252519081900360200190f35b61012e6004803603604081101561027b57600080fd5b50803590602001356001600160a01b03166106f7565b61017a610841565b61012e610847565b610138610b1f565b61012e600480360360208110156102bf57600080fd5b50356001600160a01b0316610b2e565b61012e610bd1565b6102df610c53565b6040805167ffffffffffffffff9092168252519081900360200190f35b61012e610c6a565b33600090815260208190526040902054600114610356576040805162461bcd60e51b815260206004820152601a6024820152600080516020610ec2833981519152604482015290519081900360640190fd5b600180556040517fbedf0f4abfe86d4ffad593d9607fe70e83ea706033d44d24b3b6283cf3fc4f6b90600090a1565b6002546001600160a01b031681565b60006020819052908152604090205481565b336000908152602081905260409020546001146103f8576040805162461bcd60e51b815260206004820152601a6024820152600080516020610ec2833981519152604482015290519081900360640190fd5b60008161ffff1611610445576040805162461bcd60e51b81526020600482015260116024820152704f534d2f64656c61792d69732d7a65726f60781b604482015290519081900360640190fd5b6002805461ffff808416600160a01b90810261ffff60a01b199093169290921792839055604080519290930416815290517fe5e55d7a00a8da3c2d2be2af849b5680612dc299cf26e12a879220d5f42ea2319181900360200190a150565b336000908152602081905260409020546001146104f5576040805162461bcd60e51b815260206004820152601a6024820152600080516020610ec2833981519152604482015290519081900360640190fd5b6001600160a01b0381166000818152602081815260409182902060019055815192835290517f599a298163e1678bb1c676052a8930bf0b8a1261ed6e01b8a2391e55f70001029281900390910190a150565b33600090815260208190526040902054600114610599576040805162461bcd60e51b815260206004820152601a6024820152600080516020610ec2833981519152604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b03838116919091179182905560408051929091168252517fe64aaa084ff9fb9651f314c5d25888701090b34db4f4809b517e863c62bd8508916020908290030190a150565b6004546001600160801b0380821691600160801b9004166001145b9091565b6003546001600160801b0380821691600160801b9004166001149091565b600254600160a01b900461ffff1681565b600354600090600160801b90046001600160801b03166001146106a2576040805162461bcd60e51b81526020600482015260146024820152734f534d2f6e6f2d63757272656e742d76616c756560601b604482015290519081900360640190fd5b506003546001600160801b031690565b6002546000906106de90600160b01b810467ffffffffffffffff1690600160a01b900461ffff16610d08565b67ffffffffffffffff166106f0610d2b565b1015905090565b33600090815260208190526040902054600114610749576040805162461bcd60e51b815260206004820152601a6024820152600080516020610ec2833981519152604482015290519081900360640190fd5b81693339b6abb930b83832b960b11b14156107c3576001600160a01b0381166107a35760405162461bcd60e51b8152600401808060200182810382526027815260200180610e6e6027913960400191505060405180910390fd5b600580546001600160a01b0319166001600160a01b0383161790556107fa565b60405162461bcd60e51b815260040180806020018281038252602d815260200180610e95602d913960400191505060405180910390fd5b604080518381526001600160a01b038316602082015281517fd91f38cf03346b5dc15fb60f9076f866295231ad3c3841a1051f8443f25170d1929181900390910190a15050565b60015481565b6001541561088d576040805162461bcd60e51b815260206004820152600e60248201526d13d4d34bda5ccb5cdd1bdc1c195960921b604482015290519081900360640190fd5b6108956106b2565b6108e6576040805162461bcd60e51b815260206004820152601e60248201527f45787465726e616c6c7946756e6465644f534d2f6e6f742d7061737365640000604482015290519081900360640190fd5b6005546001600160a01b0316610943576040805162461bcd60e51b815260206004820181905260248201527f45787465726e616c6c7946756e6465644f534d2f6e756c6c2d77726170706572604482015290519081900360640190fd5b60008061094e610d2f565b915091508015610b1b576004805460038054600160801b8084046001600160801b0390811682026fffffffffffffffffffffffffffffffff19938416828716178216179093556040805180820190915287841680825260016020909201919091529190931617161790556109c86109c3610d2b565b610dec565b6002805467ffffffffffffffff60b01b1916600160b01b67ffffffffffffffff93841681029190911791829055600354604080516001600160801b03909216825291909204909216602082015281517ff85e44c6c3597d176b8d59bfbf500dfdb2badfc8cf91e6d960b16583a5807e48929181900390910190a160055460408051632761f27b60e01b815233600482015290516001600160a01b0390921691632761f27b9160248082019260009290919082900301818387803b158015610a8e57600080fd5b505af1925050508015610a9f575060015b610b1b573d808015610acd576040519150601f19603f3d011682016040523d82523d6000602084013e610ad2565b606091505b50600554604080516001600160a01b03909216825233602083015280517f96957874bf643b6d75552ddf6e2f265e2c481209f5b12355e64caede7201b7409281900390910190a1505b5050565b6005546001600160a01b031681565b33600090815260208190526040902054600114610b80576040805162461bcd60e51b815260206004820152601a6024820152600080516020610ec2833981519152604482015290519081900360640190fd5b6001600160a01b03811660008181526020818152604080832092909255815192835290517f8834a87e641e9716be4f34527af5d23e11624f1ddeefede6ad75a9acfc31b9039281900390910190a150565b33600090815260208190526040902054600114610c23576040805162461bcd60e51b815260206004820152601a6024820152600080516020610ec2833981519152604482015290519081900360640190fd5b600060018190556040517f1b55ba3aa851a46be3b365aee5b5c140edd620d578922f3e8466d2cbd96f954b9190a1565b600254600160b01b900467ffffffffffffffff1681565b33600090815260208190526040902054600114610cbc576040805162461bcd60e51b815260206004820152601a6024820152600080516020610ec2833981519152604482015290519081900360640190fd5b60408051808201825260008082526020909101819052600481905560038190556001805590517f34cd470f8814066090f532fe3cb8158c5d974d7a01f4ada846dc9869e7e9d59a9190a1565b81810167ffffffffffffffff8084169082161015610d2557600080fd5b92915050565b4290565b600254604080516309fa15b560e31b8152815160009384936001600160a01b0390911692634fd0ada89260048083019392829003018186803b158015610d7457600080fd5b505afa925050508015610da057506040513d6040811015610d9457600080fd5b50805160209091015160015b610de2573d808015610dce576040519150601f19603f3d011682016040523d82523d6000602084013e610dd3565b606091505b506000925082915061060e9050565b909250905061060e565b600254600090600160a01b900461ffff16610e4e576040805162461bcd60e51b815260206004820152601860248201527f4f534d2f7570646174652d64656c61792d69732d7a65726f0000000000000000604482015290519081900360640190fd5b600254600160a01b900461ffff168281610e6457fe5b0690910391905056fe45787465726e616c6c7946756e6465644f534d2f696e76616c69642d66736d2d7772617070657245787465726e616c6c7946756e6465644f534d2f6d6f646966792d756e7265636f676e697a65642d706172616d4f534d2f6163636f756e742d6e6f742d617574686f72697a6564000000000000a2646970667358221220c37029ac5c5079c842a7074f37e4842ae016fe38f24aa0ba1b8b94f9befeee0a64736f6c63430006070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b825e25856bd98b3f2faf2aeb6cb8742b38c4025
-----Decoded View---------------
Arg [0] : priceSource_ (address): 0xb825e25856bD98b3f2FAF2aEb6Cb8742B38C4025
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000b825e25856bd98b3f2faf2aeb6cb8742b38c4025
Deployed Bytecode Sourcemap
6751:1962:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6751:1962:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;2925:90:0;;;:::i;:::-;;1279:26;;;:::i;:::-;;;;-1:-1:-1;;;;;1279:26:0;;;;;;;;;;;;;;287:51;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;287:51:0;-1:-1:-1;;;;;287:51:0;;:::i;:::-;;;;;;;;;;;;;;;;4135:185;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;4135:185:0;;;;:::i;448:164::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;448:164:0;-1:-1:-1;;;;;448:164:0;;:::i;3318:162::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;3318:162:0;-1:-1:-1;;;;;3318:162:0;;:::i;6340:139::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6110:147;;;:::i;1359:37::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6585:159;;;:::i;4673:147::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;7205:387;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;7205:387:0;;;;;;-1:-1:-1;;;;;7205:387:0;;:::i;1150:22::-;;;:::i;7669:1041::-;;;:::i;6820:32::-;;;:::i;731:170::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;731:170:0;-1:-1:-1;;;;;731:170:0;;:::i;3066:92::-;;;:::i;1403:29::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4407:152;;;:::i;2925:90::-;1054:10;1035:18;:30;;;;;;;;;;;1069:1;1035:35;1027:74;;;;;-1:-1:-1;;;1027:74:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1027:74:0;;;;;;;;;;;;;;;2984:1:::1;2974:11:::0;;3001:6:::1;::::0;::::1;::::0;;;::::1;2925:90::o:0;1279:26::-;;;-1:-1:-1;;;;;1279:26:0;;:::o;287:51::-;;;;;;;;;;;;;;:::o;4135:185::-;1054:10;1035:18;:30;;;;;;;;;;;1069:1;1035:35;1027:74;;;;;-1:-1:-1;;;1027:74:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1027:74:0;;;;;;;;;;;;;;;4219:1:::1;4211:5;:9;;;4203:39;;;::::0;;-1:-1:-1;;;4203:39:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;4203:39:0;;;;;;;;;;;;;::::1;;4253:11;:19:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;4253:19:0;;::::1;-1:-1:-1::0;;;;4253:19:0;;::::1;::::0;;;::::1;::::0;;;;4288:24:::1;::::0;;4300:11;;;::::1;;4288:24:::0;;;;::::1;::::0;;;;::::1;::::0;;::::1;4135:185:::0;:::o;448:164::-;1054:10;1035:18;:30;;;;;;;;;;;1069:1;1035:35;1027:74;;;;;-1:-1:-1;;;1027:74:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1027:74:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;532:27:0;::::1;:18;:27:::0;;;::::1;::::0;;;;;;;;562:1:::1;532:31:::0;;579:25;;;;;;;::::1;::::0;;;;;;;;::::1;448:164:::0;:::o;3318:162::-;1054:10;1035:18;:30;;;;;;;;;;;1069:1;1035:35;1027:74;;;;;-1:-1:-1;;;1027:74:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1027:74:0;;;;;;;;;;;;;;;3400:11:::1;:26:::0;;-1:-1:-1;;;;;;3400:26:0::1;-1:-1:-1::0;;;;;3400:26:0;;::::1;::::0;;;::::1;::::0;;;;3442:30:::1;::::0;;3460:11;;;::::1;3442:30:::0;;;::::1;::::0;::::1;::::0;;;;;;::::1;3318:162:::0;:::o;6340:139::-;6433:8;:14;-1:-1:-1;;;;;6433:14:0;;;;-1:-1:-1;;;6449:16:0;;;6433:14;6449:21;6340:139;;;:::o;6110:147::-;6204:11;:17;-1:-1:-1;;;;;6204:17:0;;;;-1:-1:-1;;;6224:19:0;;;6204:17;6224:24;6110:147;;:::o;1359:37::-;;;-1:-1:-1;;;1359:37:0;;;;;:::o;6585:159::-;6652:11;:19;6624:7;;-1:-1:-1;;;6652:19:0;;-1:-1:-1;;;;;6652:19:0;6675:1;6652:24;6644:57;;;;;-1:-1:-1;;;6644:57:0;;;;;;;;;;;;-1:-1:-1;;;6644:57:0;;;;;;;;;;;;;;;-1:-1:-1;6719:11:0;:17;-1:-1:-1;;;;;6719:17:0;6585:159;:::o;4673:147::-;4775:14;;4717:7;;4766:45;;-1:-1:-1;;;4775:14:0;;;;;-1:-1:-1;;;4798:11:0;;;;4766:8;:45::i;:::-;4761:51;;4744:13;:11;:13::i;:::-;:68;;4737:75;;4673:147;:::o;7205:387::-;1054:10;1035:18;:30;;;;;;;;;;;1069:1;1035:35;1027:74;;;;;-1:-1:-1;;;1027:74:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1027:74:0;;;;;;;;;;;;;;;7300:9:::1;-1:-1:-1::0;;;7300:25:0::1;7296:240;;;-1:-1:-1::0;;;;;7348:17:0;::::1;7340:69;;;;-1:-1:-1::0;;;7340:69:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7422:10;:32:::0;;-1:-1:-1;;;;;;7422:32:0::1;-1:-1:-1::0;;;;;7422:32:0;::::1;;::::0;;7296:240:::1;;;7481:55;;-1:-1:-1::0;;;7481:55:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7296:240;7552:32;::::0;;;;;-1:-1:-1;;;;;7552:32:0;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;;;;;;::::1;7205:387:::0;;:::o;1150:22::-;;;;:::o;7669:1041::-;1208:7;;:12;1200:39;;;;;-1:-1:-1;;;1200:39:0;;;;;;;;;;;;-1:-1:-1;;;1200:39:0;;;;;;;;;;;;;;;7778:13:::1;:11;:13::i;:::-;7770:56;;;::::0;;-1:-1:-1;;;7770:56:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;7895:10;::::0;-1:-1:-1;;;;;7895:10:0::1;7879:78;;;::::0;;-1:-1:-1;;;7879:78:0;;::::1;;::::0;::::1;::::0;;;;;;;::::1;::::0;;;;;;;;;;;;;::::1;;8012:22;8036:18:::0;8058:22:::1;:20;:22::i;:::-;8011:69;;;;8145:13;8141:562;;;8221:8;8204:25:::0;;:11:::1;:25:::0;;-1:-1:-1;;;8204:25:0;;::::1;-1:-1:-1::0;;;;;8204:25:0;;::::1;::::0;::::1;-1:-1:-1::0;;8204:25:0;;::::1;::::0;;::::1;;::::0;::::1;;::::0;;;8261:38:::1;::::0;;;;::::1;::::0;;;;;::::1;::::0;;;8204:25;8261:38:::1;::::0;;::::1;::::0;;;;8244:55;;;::::1;;;;::::0;;8331:31:::1;8348:13;:11;:13::i;:::-;8331:16;:31::i;:::-;8314:14;:48:::0;;-1:-1:-1;;;;8314:48:0::1;-1:-1:-1::0;;;8314:48:0::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;8427:11:::1;:17:::0;8409:53:::1;::::0;;-1:-1:-1;;;;;8427:17:0;;::::1;8409:53:::0;;8447:14;;;::::1;::::0;;::::1;8409:53;::::0;::::1;::::0;;;::::1;::::0;;;;;;;;;::::1;8512:10;::::0;:39:::1;::::0;;-1:-1:-1;;;8512:39:0;;8540:10:::1;8512:39;::::0;::::1;::::0;;;-1:-1:-1;;;;;8512:10:0;;::::1;::::0;:27:::1;::::0;:39;;;;;:10:::1;::::0;:39;;;;;;;;:10;;:39;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;8512:39:0;;;;;;;;;;;;;;8508:184;;;::::0;14:27:-1;;::::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;-1:-1:::0;8652:10:0::1;::::0;8623:53:::1;::::0;;-1:-1:-1;;;;;8652:10:0;;::::1;8623:53:::0;;8665:10:::1;8623:53;::::0;::::1;::::0;;;::::1;::::0;;;;;;;;::::1;8568:124;8508:184;1241:1;;7669:1041::o:0;6820:32::-;;;-1:-1:-1;;;;;6820:32:0;;:::o;731:170::-;1054:10;1035:18;:30;;;;;;;;;;;1069:1;1035:35;1027:74;;;;;-1:-1:-1;;;1027:74:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1027:74:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;818:27:0;::::1;848:1;818:27:::0;;;::::1;::::0;;;;;;;:31;;;;865:28;;;;;;;::::1;::::0;;;;;;;;::::1;731:170:::0;:::o;3066:92::-;1054:10;1035:18;:30;;;;;;;;;;;1069:1;1035:35;1027:74;;;;;-1:-1:-1;;;1027:74:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1027:74:0;;;;;;;;;;;;;;;3126:1:::1;3116:7;:11:::0;;;3143:7:::1;::::0;::::1;::::0;3126:1;3143:7:::1;3066:92::o:0;1403:29::-;;;-1:-1:-1;;;1403:29:0;;;;;:::o;4407:152::-;1054:10;1035:18;:30;;;;;;;;;;;1069:1;1035:35;1027:74;;;;;-1:-1:-1;;;1027:74:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1027:74:0;;;;;;;;;;;;;;;4489:10:::1;::::0;;;;::::1;::::0;;-1:-1:-1;4489:10:0;;;::::1;::::0;;::::1;::::0;;;4478:8:::1;:21:::0;;;4464:11:::1;:35:::0;;;4478:21;4510:11;;4537:14;;::::1;::::0;-1:-1:-1;4537:14:0::1;4407:152::o:0;2721:125::-;2807:5;;;2831:6;;;;;;;;;2823:15;;12:1:-1;9;2:12;2823:15:0;2721:125;;;;:::o;3567:93::-;3637:15;3567:93;:::o;5697:329::-;5794:11;;5782:48;;;-1:-1:-1;;;5782:48:0;;;;5752:7;;;;-1:-1:-1;;;;;5794:11:0;;;;5782:46;;:48;;;;;;;;;;;5794:11;5782:48;;;2:2:-1;;;;27:1;24;17:12;2:2;5782:48:0;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;5782:48:0;;;;;;;;;5778:241;;;;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;-1:-1;5998:1:0;;-1:-1:-1;5998:1:0;;-1:-1:-1;5990:17:0;;-1:-1:-1;5990:17:0;5778:241;5905:14;;-1:-1:-1;5921:13:0;-1:-1:-1;5897:38:0;;3821:208;3913:11;;3886:6;;-1:-1:-1;;;3913:11:0;;;;3905:53;;;;;-1:-1:-1;;;3905:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4008:11;;-1:-1:-1;;;4008:11:0;;;;3996:9;4008:11;3996:23;;;;;3983:37;;;;3821:208;-1:-1:-1;3821:208:0:o
Swarm Source
ipfs://c37029ac5c5079c842a7074f37e4842ae016fe38f24aa0ba1b8b94f9befeee0a
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 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.