Feature Tip: Add private address tag to any address under My Name Tag !
Synthetix: Exchange Rates contract has migrated to a new address.
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 9,652 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Update Rates | 7626787 | 2132 days ago | IN | 0 ETH | 0.00087545 | ||||
Update Rates | 7626750 | 2132 days ago | IN | 0 ETH | 0.00058363 | ||||
Update Rates | 7626739 | 2132 days ago | IN | 0 ETH | 0.00087526 | ||||
Update Rates | 7626727 | 2132 days ago | IN | 0 ETH | 0.00087526 | ||||
Update Rates | 7626646 | 2132 days ago | IN | 0 ETH | 0.00087545 | ||||
Update Rates | 7626509 | 2132 days ago | IN | 0 ETH | 0.0005835 | ||||
Update Rates | 7626481 | 2132 days ago | IN | 0 ETH | 0.00029181 | ||||
Update Rates | 7626459 | 2132 days ago | IN | 0 ETH | 0.00029181 | ||||
Update Rates | 7626418 | 2132 days ago | IN | 0 ETH | 0.00058338 | ||||
Update Rates | 7626392 | 2132 days ago | IN | 0 ETH | 0.00087545 | ||||
Update Rates | 7626368 | 2132 days ago | IN | 0 ETH | 0.00087545 | ||||
Update Rates | 7626317 | 2132 days ago | IN | 0 ETH | 0.00087526 | ||||
Update Rates | 7626316 | 2132 days ago | IN | 0 ETH | 0.00029181 | ||||
Update Rates | 7626152 | 2132 days ago | IN | 0 ETH | 0.00058363 | ||||
Update Rates | 7626127 | 2132 days ago | IN | 0 ETH | 0.00087545 | ||||
Update Rates | 7626114 | 2132 days ago | IN | 0 ETH | 0.00087545 | ||||
Update Rates | 7625956 | 2132 days ago | IN | 0 ETH | 0.00087545 | ||||
Update Rates | 7625838 | 2132 days ago | IN | 0 ETH | 0.00087545 | ||||
Update Rates | 7625771 | 2132 days ago | IN | 0 ETH | 0.00087545 | ||||
Update Rates | 7625717 | 2132 days ago | IN | 0 ETH | 0.00087545 | ||||
Update Rates | 7625645 | 2132 days ago | IN | 0 ETH | 0.00087526 | ||||
Update Rates | 7625510 | 2132 days ago | IN | 0 ETH | 0.00087545 | ||||
Update Rates | 7625451 | 2132 days ago | IN | 0 ETH | 0.00087545 | ||||
Update Rates | 7625407 | 2132 days ago | IN | 0 ETH | 0.00087545 | ||||
Update Rates | 7625386 | 2132 days ago | IN | 0 ETH | 0.00087545 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
ExchangeRates
Compiler Version
v0.4.25+commit.59dbf8f1
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-12-06 */ /* =============================================== * Flattened with Solidifier by Coinage * * https://solidifier.coina.ge * =============================================== */ pragma solidity ^0.4.24; /** * @title SafeMath * @dev Math operations with safety checks that revert on error */ library SafeMath { /** * @dev Multiplies two numbers, reverts on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b); return c; } /** * @dev Integer division of two numbers truncating the quotient, reverts on division by zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0); // Solidity only automatically asserts when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a); uint256 c = a - b; return c; } /** * @dev Adds two numbers, reverts on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a); return c; } /** * @dev Divides two numbers and returns the remainder (unsigned integer modulo), * reverts when dividing by zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0); return a % b; } } /* ----------------------------------------------------------------- FILE INFORMATION ----------------------------------------------------------------- file: SafeDecimalMath.sol version: 2.0 author: Kevin Brown Gavin Conway date: 2018-10-18 ----------------------------------------------------------------- MODULE DESCRIPTION ----------------------------------------------------------------- A library providing safe mathematical operations for division and multiplication with the capability to round or truncate the results to the nearest increment. Operations can return a standard precision or high precision decimal. High precision decimals are useful for example when attempting to calculate percentages or fractions accurately. ----------------------------------------------------------------- */ /** * @title Safely manipulate unsigned fixed-point decimals at a given precision level. * @dev Functions accepting uints in this contract and derived contracts * are taken to be such fixed point decimals of a specified precision (either standard * or high). */ library SafeDecimalMath { using SafeMath for uint; /* Number of decimal places in the representations. */ uint8 public constant decimals = 18; uint8 public constant highPrecisionDecimals = 27; /* The number representing 1.0. */ uint public constant UNIT = 10 ** uint(decimals); /* The number representing 1.0 for higher fidelity numbers. */ uint public constant PRECISE_UNIT = 10 ** uint(highPrecisionDecimals); uint private constant UNIT_TO_HIGH_PRECISION_CONVERSION_FACTOR = 10 ** uint(highPrecisionDecimals - decimals); /** * @return Provides an interface to UNIT. */ function unit() external pure returns (uint) { return UNIT; } /** * @return Provides an interface to PRECISE_UNIT. */ function preciseUnit() external pure returns (uint) { return PRECISE_UNIT; } /** * @return The result of multiplying x and y, interpreting the operands as fixed-point * decimals. * * @dev A unit factor is divided out after the product of x and y is evaluated, * so that product must be less than 2**256. As this is an integer division, * the internal division always rounds down. This helps save on gas. Rounding * is more expensive on gas. */ function multiplyDecimal(uint x, uint y) internal pure returns (uint) { /* Divide by UNIT to remove the extra factor introduced by the product. */ return x.mul(y) / UNIT; } /** * @return The result of safely multiplying x and y, interpreting the operands * as fixed-point decimals of the specified precision unit. * * @dev The operands should be in the form of a the specified unit factor which will be * divided out after the product of x and y is evaluated, so that product must be * less than 2**256. * * Unlike multiplyDecimal, this function rounds the result to the nearest increment. * Rounding is useful when you need to retain fidelity for small decimal numbers * (eg. small fractions or percentages). */ function _multiplyDecimalRound(uint x, uint y, uint precisionUnit) private pure returns (uint) { /* Divide by UNIT to remove the extra factor introduced by the product. */ uint quotientTimesTen = x.mul(y) / (precisionUnit / 10); if (quotientTimesTen % 10 >= 5) { quotientTimesTen += 10; } return quotientTimesTen / 10; } /** * @return The result of safely multiplying x and y, interpreting the operands * as fixed-point decimals of a precise unit. * * @dev The operands should be in the precise unit factor which will be * divided out after the product of x and y is evaluated, so that product must be * less than 2**256. * * Unlike multiplyDecimal, this function rounds the result to the nearest increment. * Rounding is useful when you need to retain fidelity for small decimal numbers * (eg. small fractions or percentages). */ function multiplyDecimalRoundPrecise(uint x, uint y) internal pure returns (uint) { return _multiplyDecimalRound(x, y, PRECISE_UNIT); } /** * @return The result of safely multiplying x and y, interpreting the operands * as fixed-point decimals of a standard unit. * * @dev The operands should be in the standard unit factor which will be * divided out after the product of x and y is evaluated, so that product must be * less than 2**256. * * Unlike multiplyDecimal, this function rounds the result to the nearest increment. * Rounding is useful when you need to retain fidelity for small decimal numbers * (eg. small fractions or percentages). */ function multiplyDecimalRound(uint x, uint y) internal pure returns (uint) { return _multiplyDecimalRound(x, y, UNIT); } /** * @return The result of safely dividing x and y. The return value is a high * precision decimal. * * @dev y is divided after the product of x and the standard precision unit * is evaluated, so the product of x and UNIT must be less than 2**256. As * this is an integer division, the result is always rounded down. * This helps save on gas. Rounding is more expensive on gas. */ function divideDecimal(uint x, uint y) internal pure returns (uint) { /* Reintroduce the UNIT factor that will be divided out by y. */ return x.mul(UNIT).div(y); } /** * @return The result of safely dividing x and y. The return value is as a rounded * decimal in the precision unit specified in the parameter. * * @dev y is divided after the product of x and the specified precision unit * is evaluated, so the product of x and the specified precision unit must * be less than 2**256. The result is rounded to the nearest increment. */ function _divideDecimalRound(uint x, uint y, uint precisionUnit) private pure returns (uint) { uint resultTimesTen = x.mul(precisionUnit * 10).div(y); if (resultTimesTen % 10 >= 5) { resultTimesTen += 10; } return resultTimesTen / 10; } /** * @return The result of safely dividing x and y. The return value is as a rounded * standard precision decimal. * * @dev y is divided after the product of x and the standard precision unit * is evaluated, so the product of x and the standard precision unit must * be less than 2**256. The result is rounded to the nearest increment. */ function divideDecimalRound(uint x, uint y) internal pure returns (uint) { return _divideDecimalRound(x, y, UNIT); } /** * @return The result of safely dividing x and y. The return value is as a rounded * high precision decimal. * * @dev y is divided after the product of x and the high precision unit * is evaluated, so the product of x and the high precision unit must * be less than 2**256. The result is rounded to the nearest increment. */ function divideDecimalRoundPrecise(uint x, uint y) internal pure returns (uint) { return _divideDecimalRound(x, y, PRECISE_UNIT); } /** * @dev Convert a standard decimal representation to a high precision one. */ function decimalToPreciseDecimal(uint i) internal pure returns (uint) { return i.mul(UNIT_TO_HIGH_PRECISION_CONVERSION_FACTOR); } /** * @dev Convert a high precision decimal to a standard decimal representation. */ function preciseDecimalToDecimal(uint i) internal pure returns (uint) { uint quotientTimesTen = i / (UNIT_TO_HIGH_PRECISION_CONVERSION_FACTOR / 10); if (quotientTimesTen % 10 >= 5) { quotientTimesTen += 10; } return quotientTimesTen / 10; } } /* ----------------------------------------------------------------- FILE INFORMATION ----------------------------------------------------------------- file: Owned.sol version: 1.1 author: Anton Jurisevic Dominic Romanowski date: 2018-2-26 ----------------------------------------------------------------- MODULE DESCRIPTION ----------------------------------------------------------------- An Owned contract, to be inherited by other contracts. Requires its owner to be explicitly set in the constructor. Provides an onlyOwner access modifier. To change owner, the current owner must nominate the next owner, who then has to accept the nomination. The nomination can be cancelled before it is accepted by the new owner by having the previous owner change the nomination (setting it to 0). ----------------------------------------------------------------- */ /** * @title A contract with an owner. * @notice Contract ownership can be transferred by first nominating the new owner, * who must then accept the ownership, which prevents accidental incorrect ownership transfers. */ contract Owned { address public owner; address public nominatedOwner; /** * @dev Owned Constructor */ constructor(address _owner) public { require(_owner != address(0), "Owner address cannot be 0"); owner = _owner; emit OwnerChanged(address(0), _owner); } /** * @notice Nominate a new owner of this contract. * @dev Only the current owner may nominate a new owner. */ function nominateNewOwner(address _owner) external onlyOwner { nominatedOwner = _owner; emit OwnerNominated(_owner); } /** * @notice Accept the nomination to be owner. */ function acceptOwnership() external { require(msg.sender == nominatedOwner, "You must be nominated before you can accept ownership"); emit OwnerChanged(owner, nominatedOwner); owner = nominatedOwner; nominatedOwner = address(0); } modifier onlyOwner { require(msg.sender == owner, "Only the contract owner may perform this action"); _; } event OwnerNominated(address newOwner); event OwnerChanged(address oldOwner, address newOwner); } /* ----------------------------------------------------------------- FILE INFORMATION ----------------------------------------------------------------- file: SelfDestructible.sol version: 1.2 author: Anton Jurisevic date: 2018-05-29 ----------------------------------------------------------------- MODULE DESCRIPTION ----------------------------------------------------------------- This contract allows an inheriting contract to be destroyed after its owner indicates an intention and then waits for a period without changing their mind. All ether contained in the contract is forwarded to a nominated beneficiary upon destruction. ----------------------------------------------------------------- */ /** * @title A contract that can be destroyed by its owner after a delay elapses. */ contract SelfDestructible is Owned { uint public initiationTime; bool public selfDestructInitiated; address public selfDestructBeneficiary; uint public constant SELFDESTRUCT_DELAY = 4 weeks; /** * @dev Constructor * @param _owner The account which controls this contract. */ constructor(address _owner) Owned(_owner) public { require(_owner != address(0), "Owner must not be the zero address"); selfDestructBeneficiary = _owner; emit SelfDestructBeneficiaryUpdated(_owner); } /** * @notice Set the beneficiary address of this contract. * @dev Only the contract owner may call this. The provided beneficiary must be non-null. * @param _beneficiary The address to pay any eth contained in this contract to upon self-destruction. */ function setSelfDestructBeneficiary(address _beneficiary) external onlyOwner { require(_beneficiary != address(0), "Beneficiary must not be the zero address"); selfDestructBeneficiary = _beneficiary; emit SelfDestructBeneficiaryUpdated(_beneficiary); } /** * @notice Begin the self-destruction counter of this contract. * Once the delay has elapsed, the contract may be self-destructed. * @dev Only the contract owner may call this. */ function initiateSelfDestruct() external onlyOwner { initiationTime = now; selfDestructInitiated = true; emit SelfDestructInitiated(SELFDESTRUCT_DELAY); } /** * @notice Terminate and reset the self-destruction timer. * @dev Only the contract owner may call this. */ function terminateSelfDestruct() external onlyOwner { initiationTime = 0; selfDestructInitiated = false; emit SelfDestructTerminated(); } /** * @notice If the self-destruction delay has elapsed, destroy this contract and * remit any ether it owns to the beneficiary address. * @dev Only the contract owner may call this. */ function selfDestruct() external onlyOwner { require(selfDestructInitiated, "Self destruct has not yet been initiated"); require(initiationTime + SELFDESTRUCT_DELAY < now, "Self destruct delay has not yet elapsed"); address beneficiary = selfDestructBeneficiary; emit SelfDestructed(beneficiary); selfdestruct(beneficiary); } event SelfDestructTerminated(); event SelfDestructed(address beneficiary); event SelfDestructInitiated(uint selfDestructDelay); event SelfDestructBeneficiaryUpdated(address newBeneficiary); } /* ----------------------------------------------------------------- FILE INFORMATION ----------------------------------------------------------------- file: ExchangeRates.sol version: 1.0 author: Kevin Brown date: 2018-09-12 ----------------------------------------------------------------- MODULE DESCRIPTION ----------------------------------------------------------------- A contract that any other contract in the Synthetix system can query for the current market value of various assets, including crypto assets as well as various fiat assets. This contract assumes that rate updates will completely update all rates to their current values. If a rate shock happens on a single asset, the oracle will still push updated rates for all other assets. ----------------------------------------------------------------- */ /** * @title The repository for exchange rates */ contract ExchangeRates is SelfDestructible { using SafeMath for uint; // Exchange rates stored by currency code, e.g. 'SNX', or 'sUSD' mapping(bytes4 => uint) public rates; // Update times stored by currency code, e.g. 'SNX', or 'sUSD' mapping(bytes4 => uint) public lastRateUpdateTimes; // The address of the oracle which pushes rate updates to this contract address public oracle; // Do not allow the oracle to submit times any further forward into the future than this constant. uint constant ORACLE_FUTURE_LIMIT = 10 minutes; // How long will the contract assume the rate of any asset is correct uint public rateStalePeriod = 3 hours; // Each participating currency in the XDR basket is represented as a currency key with // equal weighting. // There are 5 participating currencies, so we'll declare that clearly. bytes4[5] public xdrParticipants; // // ========== CONSTRUCTOR ========== /** * @dev Constructor * @param _owner The owner of this contract. * @param _oracle The address which is able to update rate information. * @param _currencyKeys The initial currency keys to store (in order). * @param _newRates The initial currency amounts for each currency (in order). */ constructor( // SelfDestructible (Ownable) address _owner, // Oracle values - Allows for rate updates address _oracle, bytes4[] _currencyKeys, uint[] _newRates ) /* Owned is initialised in SelfDestructible */ SelfDestructible(_owner) public { require(_currencyKeys.length == _newRates.length, "Currency key length and rate length must match."); oracle = _oracle; // The sUSD rate is always 1 and is never stale. rates["sUSD"] = SafeDecimalMath.unit(); lastRateUpdateTimes["sUSD"] = now; // These are the currencies that make up the XDR basket. // These are hard coded because: // - This way users can depend on the calculation and know it won't change for this deployment of the contract. // - Adding new currencies would likely introduce some kind of weighting factor, which // isn't worth preemptively adding when all of the currencies in the current basket are weighted at 1. // - The expectation is if this logic needs to be updated, we'll simply deploy a new version of this contract // then point the system at the new version. xdrParticipants = [ bytes4("sUSD"), bytes4("sAUD"), bytes4("sCHF"), bytes4("sEUR"), bytes4("sGBP") ]; internalUpdateRates(_currencyKeys, _newRates, now); } /* ========== SETTERS ========== */ /** * @notice Set the rates stored in this contract * @param currencyKeys The currency keys you wish to update the rates for (in order) * @param newRates The rates for each currency (in order) * @param timeSent The timestamp of when the update was sent, specified in seconds since epoch (e.g. the same as the now keyword in solidity).contract * This is useful because transactions can take a while to confirm, so this way we know how old the oracle's datapoint was exactly even * if it takes a long time for the transaction to confirm. */ function updateRates(bytes4[] currencyKeys, uint[] newRates, uint timeSent) external onlyOracle returns(bool) { return internalUpdateRates(currencyKeys, newRates, timeSent); } /** * @notice Internal function which sets the rates stored in this contract * @param currencyKeys The currency keys you wish to update the rates for (in order) * @param newRates The rates for each currency (in order) * @param timeSent The timestamp of when the update was sent, specified in seconds since epoch (e.g. the same as the now keyword in solidity).contract * This is useful because transactions can take a while to confirm, so this way we know how old the oracle's datapoint was exactly even * if it takes a long time for the transaction to confirm. */ function internalUpdateRates(bytes4[] currencyKeys, uint[] newRates, uint timeSent) internal returns(bool) { require(currencyKeys.length == newRates.length, "Currency key array length must match rates array length."); require(timeSent < (now + ORACLE_FUTURE_LIMIT), "Time is too far into the future"); // Loop through each key and perform update. for (uint i = 0; i < currencyKeys.length; i++) { // Should not set any rate to zero ever, as no asset will ever be // truely worthless and still valid. In this scenario, we should // delete the rate and remove it from the system. require(newRates[i] != 0, "Zero is not a valid rate, please call deleteRate instead."); require(currencyKeys[i] != "sUSD", "Rate of sUSD cannot be updated, it's always UNIT."); // We should only update the rate if it's at least the same age as the last rate we've got. if (timeSent >= lastRateUpdateTimes[currencyKeys[i]]) { // Ok, go ahead with the update. rates[currencyKeys[i]] = newRates[i]; lastRateUpdateTimes[currencyKeys[i]] = timeSent; } } emit RatesUpdated(currencyKeys, newRates); // Now update our XDR rate. updateXDRRate(timeSent); return true; } /** * @notice Update the Synthetix Drawing Rights exchange rate based on other rates already updated. */ function updateXDRRate(uint timeSent) internal { uint total = 0; for (uint i = 0; i < xdrParticipants.length; i++) { total = rates[xdrParticipants[i]].add(total); } // Set the rate rates["XDR"] = total; // Record that we updated the XDR rate. lastRateUpdateTimes["XDR"] = timeSent; // Emit our updated event separate to the others to save // moving data around between arrays. bytes4[] memory eventCurrencyCode = new bytes4[](1); eventCurrencyCode[0] = "XDR"; uint[] memory eventRate = new uint[](1); eventRate[0] = rates["XDR"]; emit RatesUpdated(eventCurrencyCode, eventRate); } /** * @notice Delete a rate stored in the contract * @param currencyKey The currency key you wish to delete the rate for */ function deleteRate(bytes4 currencyKey) external onlyOracle { require(rates[currencyKey] > 0, "Rate is zero"); delete rates[currencyKey]; delete lastRateUpdateTimes[currencyKey]; emit RateDeleted(currencyKey); } /** * @notice Set the Oracle that pushes the rate information to this contract * @param _oracle The new oracle address */ function setOracle(address _oracle) external onlyOwner { oracle = _oracle; emit OracleUpdated(oracle); } /** * @notice Set the stale period on the updated rate variables * @param _time The new rateStalePeriod */ function setRateStalePeriod(uint _time) external onlyOwner { rateStalePeriod = _time; emit RateStalePeriodUpdated(rateStalePeriod); } /* ========== VIEWS ========== */ /** * @notice Retrieve the rate for a specific currency */ function rateForCurrency(bytes4 currencyKey) public view returns (uint) { return rates[currencyKey]; } /** * @notice Retrieve the rates for a list of currencies */ function ratesForCurrencies(bytes4[] currencyKeys) public view returns (uint[]) { uint[] memory _rates = new uint[](currencyKeys.length); for (uint8 i = 0; i < currencyKeys.length; i++) { _rates[i] = rates[currencyKeys[i]]; } return _rates; } /** * @notice Retrieve a list of last update times for specific currencies */ function lastRateUpdateTimeForCurrency(bytes4 currencyKey) public view returns (uint) { return lastRateUpdateTimes[currencyKey]; } /** * @notice Retrieve the last update time for a specific currency */ function lastRateUpdateTimesForCurrencies(bytes4[] currencyKeys) public view returns (uint[]) { uint[] memory lastUpdateTimes = new uint[](currencyKeys.length); for (uint8 i = 0; i < currencyKeys.length; i++) { lastUpdateTimes[i] = lastRateUpdateTimes[currencyKeys[i]]; } return lastUpdateTimes; } /** * @notice Check if a specific currency's rate hasn't been updated for longer than the stale period. */ function rateIsStale(bytes4 currencyKey) external view returns (bool) { // sUSD is a special case and is never stale. if (currencyKey == "sUSD") return false; return lastRateUpdateTimes[currencyKey].add(rateStalePeriod) < now; } /** * @notice Check if any of the currency rates passed in haven't been updated for longer than the stale period. */ function anyRateIsStale(bytes4[] currencyKeys) external view returns (bool) { // Loop through each key and check whether the data point is stale. uint256 i = 0; while (i < currencyKeys.length) { // sUSD is a special case and is never false if (currencyKeys[i] != "sUSD" && lastRateUpdateTimes[currencyKeys[i]].add(rateStalePeriod) < now) { return true; } i += 1; } return false; } /* ========== MODIFIERS ========== */ modifier onlyOracle { require(msg.sender == oracle, "Only the oracle can perform this action"); _; } /* ========== EVENTS ========== */ event OracleUpdated(address newOracle); event RateStalePeriodUpdated(uint rateStalePeriod); event RatesUpdated(bytes4[] currencyKeys, uint[] newRates); event RateDeleted(bytes4 currencyKey); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"rateStalePeriod","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"nominateNewOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"initiationTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"currencyKeys","type":"bytes4[]"},{"name":"newRates","type":"uint256[]"},{"name":"timeSent","type":"uint256"}],"name":"updateRates","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"setSelfDestructBeneficiary","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"terminateSelfDestruct","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"currencyKey","type":"bytes4"}],"name":"deleteRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"currencyKeys","type":"bytes4[]"}],"name":"anyRateIsStale","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"nominatedOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"currencyKeys","type":"bytes4[]"}],"name":"ratesForCurrencies","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_time","type":"uint256"}],"name":"setRateStalePeriod","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_oracle","type":"address"}],"name":"setOracle","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"oracle","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"currencyKeys","type":"bytes4[]"}],"name":"lastRateUpdateTimesForCurrencies","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"selfDestruct","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"SELFDESTRUCT_DELAY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"xdrParticipants","outputs":[{"name":"","type":"bytes4"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"currencyKey","type":"bytes4"}],"name":"rateForCurrency","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"selfDestructInitiated","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"initiateSelfDestruct","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"currencyKey","type":"bytes4"}],"name":"lastRateUpdateTimeForCurrency","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"selfDestructBeneficiary","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes4"}],"name":"rates","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes4"}],"name":"lastRateUpdateTimes","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"currencyKey","type":"bytes4"}],"name":"rateIsStale","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_owner","type":"address"},{"name":"_oracle","type":"address"},{"name":"_currencyKeys","type":"bytes4[]"},{"name":"_newRates","type":"uint256[]"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newOracle","type":"address"}],"name":"OracleUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"rateStalePeriod","type":"uint256"}],"name":"RateStalePeriodUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"currencyKeys","type":"bytes4[]"},{"indexed":false,"name":"newRates","type":"uint256[]"}],"name":"RatesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"currencyKey","type":"bytes4"}],"name":"RateDeleted","type":"event"},{"anonymous":false,"inputs":[],"name":"SelfDestructTerminated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"beneficiary","type":"address"}],"name":"SelfDestructed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"selfDestructDelay","type":"uint256"}],"name":"SelfDestructInitiated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newBeneficiary","type":"address"}],"name":"SelfDestructBeneficiaryUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newOwner","type":"address"}],"name":"OwnerNominated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldOwner","type":"address"},{"indexed":false,"name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"}]
Contract Creation Code
6080604052612a306007553480156200001757600080fd5b50604051620026ca380380620026ca83398101604090815281516020830151918301516060840151919390810191018380600160a060020a0381161515620000c057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f74206265203000000000000000604482015290519081900360640190fd5b60008054600160a060020a031916600160a060020a038316908117825560408051928352602083019190915280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a150600160a060020a0381161515620001b757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f4f776e6572206d757374206e6f7420626520746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60038054600160a060020a038316610100810261010060a860020a03199092169190911790915560408051918252517fd5da63a0b864b315bc04128dedbc93888c8529ee6cf47ce664dc204339228c539181900360200190a1508051825114620002a857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f43757272656e6379206b6579206c656e67746820616e642072617465206c656e60448201527f677468206d757374206d617463682e0000000000000000000000000000000000606482015290519081900360840190fd5b60068054600160a060020a031916600160a060020a038516179055604080517f907af6c000000000000000000000000000000000000000000000000000000000815290517384d626b2bb4d0f064067e4bf80fce7055d8f3e7b9163907af6c0916004808301926020929190829003018186803b1580156200032857600080fd5b505af41580156200033d573d6000803e3d6000fd5b505050506040513d60208110156200035457600080fd5b50517f735553440000000000000000000000000000000000000000000000000000000060008190527f9fb26aab670129fe77edeb65291121f3b0b41e28b5cdcb1e5461de51bb21e3c89190915560056020818152427f74c62d09fbc50aefae0794a9a068f786a692826fbdfe63828ec23a875865823f556040805160a0810182529384527f7341554400000000000000000000000000000000000000000000000000000000918401919091527f7343484600000000000000000000000000000000000000000000000000000000908301527f734555520000000000000000000000000000000000000000000000000000000060608301527f734742500000000000000000000000000000000000000000000000000000000060808301526200047f9160089162000bf2565b5062000496828242640100000000620004a1810204565b505050505062000cd6565b600080835185511415156200053d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f43757272656e6379206b6579206172726179206c656e677468206d757374206d60448201527f61746368207261746573206172726179206c656e6774682e0000000000000000606482015290519081900360840190fd5b42610258018310620005b057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f54696d6520697320746f6f2066617220696e746f207468652066757475726500604482015290519081900360640190fd5b5060005b845181101562000851578381815181101515620005cd57fe5b6020908102909101015115156200066b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f5a65726f206973206e6f7420612076616c696420726174652c20706c6561736560448201527f2063616c6c2064656c6574655261746520696e73746561642e00000000000000606482015290519081900360840190fd5b84818151811015156200067a57fe5b90602001906020020151600160e060020a0319167f7355534400000000000000000000000000000000000000000000000000000000141515156200074557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f52617465206f6620735553442063616e6e6f7420626520757064617465642c2060448201527f6974277320616c7761797320554e49542e000000000000000000000000000000606482015290519081900360840190fd5b6005600086838151811015156200075857fe5b60209081029091018101517fffffffff0000000000000000000000000000000000000000000000000000000016825281019190915260400160002054831062000848578381815181101515620007aa57fe5b90602001906020020151600460008784815181101515620007c757fe5b90602001906020020151600160e060020a031916600160e060020a031916815260200190815260200160002081905550826005600087848151811015156200080b57fe5b60209081029091018101517fffffffff00000000000000000000000000000000000000000000000000000000168252810191909152604001600020555b600101620005b4565b6000805160206200268a8339815191528585604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015620008a95781810151838201526020016200088f565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015620008ea578181015183820152602001620008d0565b5050505090500194505050505060405180910390a162000913836401000000006200091e810204565b506001949350505050565b6000806060805b6005831015620009c957620009bb8460046000600887600581106200094657fe5b600891828204019190066004029054906101000a90047c010000000000000000000000000000000000000000000000000000000002600160e060020a031916600160e060020a03191681526020019081526020016000205462000bd8640100000000026200167c179091906401000000009004565b935060019092019162000925565b7f5844520000000000000000000000000000000000000000000000000000000000600052600080516020620026aa83398151915284905560056020527fc6095f8ba0c30294f3d36501e92c5966cb30d5606d2b235ecebf5abd9fffed92859055604080516001808252818301909252908160200160208202803883390190505091507f584452000000000000000000000000000000000000000000000000000000000082600081518110151562000a7c57fe5b7fffffffff000000000000000000000000000000000000000000000000000000009290921660209283029190910182015260408051600180825281830190925291828101908038833950507f584452000000000000000000000000000000000000000000000000000000000060009081526004602052600080516020620026aa83398151915254835193945092849250811062000b1557fe5b90602001906020020181815250506000805160206200268a8339815191528282604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101562000b7b57818101518382015260200162000b61565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101562000bbc57818101518382015260200162000ba2565b5050505090500194505050505060405180910390a15050505050565b60008282018381101562000beb57600080fd5b9392505050565b60018301918390821562000c9d5791602002820160005b8382111562000c6957835183826101000a81548163ffffffff02191690837c010000000000000000000000000000000000000000000000000000000090040217905550926020019260040160208160030104928301926001030262000c09565b801562000c9b5782816101000a81549063ffffffff021916905560040160208160030104928301926001030262000c69565b505b5062000cab92915062000caf565b5090565b62000cd391905b8082111562000cab57805463ffffffff1916815560010162000cb6565b90565b6119a48062000ce66000396000f3006080604052600436106101455763ffffffff60e060020a6000350416630ee4951b811461014a5780631627540c1461017157806317c70de4146101945780631d2fed16146101a957806320714f88146101ec5780633278c9601461020d5780633608069414610222578063370d62ad1461024457806353a47bb7146102645780635dc2944a1461029557806379ba50971461033a57806379cb657a1461034f5780637adbf973146103675780637dc0d1d01461038857806389f8ab941461039d5780638da5cb5b146103f25780639cb8a26a14610407578063a461fc821461041c578063aa687daf14610431578063af1ff97214610466578063b8225dec14610488578063bd32aa441461049d578063c0e59e4d146104b2578063c58aaae6146104d4578063de5eb832146104e9578063e1686e721461050b578063ea3d41091461052d575b600080fd5b34801561015657600080fd5b5061015f61054f565b60408051918252519081900360200190f35b34801561017d57600080fd5b50610192600160a060020a0360043516610555565b005b3480156101a057600080fd5b5061015f61061a565b3480156101b557600080fd5b506101d86024600480358281019290820135918135918201910135604435610620565b604080519115158252519081900360200190f35b3480156101f857600080fd5b50610192600160a060020a0360043516610718565b34801561021957600080fd5b5061019261086b565b34801561022e57600080fd5b50610192600160e060020a031960043516610909565b34801561025057600080fd5b506101d86004803560248101910135610a5e565b34801561027057600080fd5b50610279610b22565b60408051600160a060020a039092168252519081900360200190f35b3480156102a157600080fd5b50604080516020600480358082013583810280860185019096528085526102ea95369593946024949385019291829185019084908082843750949750610b319650505050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561032657818101518382015260200161030e565b505050509050019250505060405180910390f35b34801561034657600080fd5b50610192610bd1565b34801561035b57600080fd5b50610192600435610cd9565b34801561037357600080fd5b50610192600160a060020a0360043516610d78565b34801561039457600080fd5b50610279610e43565b3480156103a957600080fd5b50604080516020600480358082013583810280860185019096528085526102ea95369593946024949385019291829185019084908082843750949750610e529650505050505050565b3480156103fe57600080fd5b50610279610ef2565b34801561041357600080fd5b50610192610f01565b34801561042857600080fd5b5061015f6110c6565b34801561043d57600080fd5b506104496004356110cd565b60408051600160e060020a03199092168252519081900360200190f35b34801561047257600080fd5b5061015f600160e060020a0319600435166110fa565b34801561049457600080fd5b506101d861111a565b3480156104a957600080fd5b50610192611123565b3480156104be57600080fd5b5061015f600160e060020a0319600435166111d0565b3480156104e057600080fd5b506102796111ec565b3480156104f557600080fd5b5061015f600160e060020a031960043516611200565b34801561051757600080fd5b5061015f600160e060020a031960043516611212565b34801561053957600080fd5b506101d8600160e060020a031960043516611224565b60075481565b600054600160a060020a031633146105b9576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206119398339815191526044820152600080516020611959833981519152606482015290519081900360840190fd5b60018054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229181900360200190a150565b60025481565b600654600090600160a060020a031633146106ab576040805160e560020a62461bcd02815260206004820152602760248201527f4f6e6c7920746865206f7261636c652063616e20706572666f726d207468697360448201527f20616374696f6e00000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b61070e8686808060200260200160405190810160405280939291908181526020018383602002808284375050604080516020808c0282810182019093528b82529095508b94508a9350839250850190849080828437508994506112969350505050565b9695505050505050565b600054600160a060020a0316331461077c576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206119398339815191526044820152600080516020611959833981519152606482015290519081900360840190fd5b600160a060020a0381161515610802576040805160e560020a62461bcd02815260206004820152602860248201527f42656e6566696369617279206d757374206e6f7420626520746865207a65726f60448201527f2061646472657373000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60038054600160a060020a038316610100810274ffffffffffffffffffffffffffffffffffffffff00199092169190911790915560408051918252517fd5da63a0b864b315bc04128dedbc93888c8529ee6cf47ce664dc204339228c539181900360200190a150565b600054600160a060020a031633146108cf576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206119398339815191526044820152600080516020611959833981519152606482015290519081900360840190fd5b600060028190556003805460ff191690556040517f6adcc7125002935e0aa31697538ebbd65cfddf20431eb6ecdcfc3e238bfd082c9190a1565b600654600160a060020a03163314610991576040805160e560020a62461bcd02815260206004820152602760248201527f4f6e6c7920746865206f7261636c652063616e20706572666f726d207468697360448201527f20616374696f6e00000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160e060020a0319811660009081526004602052604081205411610a00576040805160e560020a62461bcd02815260206004820152600c60248201527f52617465206973207a65726f0000000000000000000000000000000000000000604482015290519081900360640190fd5b600160e060020a0319811660008181526004602090815260408083208390556005825280832092909255815192835290517f2cefb058ca1556b021b67f710e3df89c564650f01fef8cd944cbb14d7358680b9281900390910190a150565b6000805b82811015610b1657838382818110610a7657fe5b90506020020135600160e060020a031916600160e060020a0319167f735553440000000000000000000000000000000000000000000000000000000014158015610b00575042610afe600754600560008888878181101515610ad457fe5b60209081029290920135600160e060020a031916835250810191909152604001600020549061167c565b105b15610b0e5760019150610b1b565b600101610a62565b600091505b5092915050565b600154600160a060020a031681565b60608060008351604051908082528060200260200182016040528015610b61578160200160208202803883390190505b509150600090505b83518160ff161015610b1b5760046000858360ff16815181101515610b8a57fe5b6020908102909101810151600160e060020a0319168252810191909152604001600020548251839060ff8416908110610bbf57fe5b60209081029091010152600101610b69565b600154600160a060020a03163314610c59576040805160e560020a62461bcd02815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527f2063616e20616363657074206f776e6572736869700000000000000000000000606482015290519081900360840190fd5b60005460015460408051600160a060020a03938416815292909116602083015280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a1600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b600054600160a060020a03163314610d3d576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206119398339815191526044820152600080516020611959833981519152606482015290519081900360840190fd5b60078190556040805182815290517f16529d8c407b08938da67de7fa4319199baffce4f5d1971f812cc770b0237e669181900360200190a150565b600054600160a060020a03163314610ddc576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206119398339815191526044820152600080516020611959833981519152606482015290519081900360840190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03838116919091179182905560408051929091168252517f3df77beb5db05fcdd70a30fc8adf3f83f9501b68579455adbd100b8180940394916020908290030190a150565b600654600160a060020a031681565b60608060008351604051908082528060200260200182016040528015610e82578160200160208202803883390190505b509150600090505b83518160ff161015610b1b5760056000858360ff16815181101515610eab57fe5b6020908102909101810151600160e060020a0319168252810191909152604001600020548251839060ff8416908110610ee057fe5b60209081029091010152600101610e8a565b600054600160a060020a031681565b60008054600160a060020a03163314610f66576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206119398339815191526044820152600080516020611959833981519152606482015290519081900360840190fd5b60035460ff161515610fe8576040805160e560020a62461bcd02815260206004820152602860248201527f53656c6620646573747275637420686173206e6f7420796574206265656e206960448201527f6e69746961746564000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b426224ea006002540110151561106e576040805160e560020a62461bcd02815260206004820152602760248201527f53656c662064657374727563742064656c617920686173206e6f74207965742060448201527f656c617073656400000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b5060035460408051600160a060020a0361010090930492909216808352905190917f8a09e1677ced846cb537dc2b172043bd05a1a81ad7e0033a7ef8ba762df990b7919081900360200190a180600160a060020a0316ff5b6224ea0081565b600881600581106110da57fe5b60089182820401919006600402915054906101000a900460e060020a0281565b600160e060020a031981166000908152600460205260409020545b919050565b60035460ff1681565b600054600160a060020a03163314611187576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206119398339815191526044820152600080516020611959833981519152606482015290519081900360840190fd5b426002556003805460ff19166001179055604080516224ea00815290517fcbd94ca75b8dc45c9d80c77e851670e78843c0d75180cb81db3e2158228fa9a69181900360200190a1565b600160e060020a03191660009081526005602052604090205490565b6003546101009004600160a060020a031681565b60046020526000908152604090205481565b60056020526000908152604090205481565b60007f7355534400000000000000000000000000000000000000000000000000000000600160e060020a03198316141561126057506000611115565b600754600160e060020a03198316600090815260056020526040902054429161128f919063ffffffff61167c16565b1092915050565b6000808351855114151561131a576040805160e560020a62461bcd02815260206004820152603860248201527f43757272656e6379206b6579206172726179206c656e677468206d757374206d60448201527f61746368207261746573206172726179206c656e6774682e0000000000000000606482015290519081900360840190fd5b42610258018310611375576040805160e560020a62461bcd02815260206004820152601f60248201527f54696d6520697320746f6f2066617220696e746f207468652066757475726500604482015290519081900360640190fd5b5060005b84518110156115ad57838181518110151561139057fe5b602090810290910101511515611416576040805160e560020a62461bcd02815260206004820152603960248201527f5a65726f206973206e6f7420612076616c696420726174652c20706c6561736560448201527f2063616c6c2064656c6574655261746520696e73746561642e00000000000000606482015290519081900360840190fd5b848181518110151561142457fe5b90602001906020020151600160e060020a0319167f7355534400000000000000000000000000000000000000000000000000000000141515156114d7576040805160e560020a62461bcd02815260206004820152603160248201527f52617465206f6620735553442063616e6e6f7420626520757064617465642c2060448201527f6974277320616c7761797320554e49542e000000000000000000000000000000606482015290519081900360840190fd5b6005600086838151811015156114e957fe5b6020908102909101810151600160e060020a03191682528101919091526040016000205483106115a557838181518110151561152157fe5b9060200190602002015160046000878481518110151561153d57fe5b90602001906020020151600160e060020a031916600160e060020a0319168152602001908152602001600020819055508260056000878481518110151561158057fe5b6020908102909101810151600160e060020a0319168252810191909152604001600020555b600101611379565b7f7a72efae5f6b256f1ca71728b01f9dd7004ff3770dcaef4c44872b94d9f9e91b8585604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156116145781810151838201526020016115fc565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561165357818101518382015260200161163b565b5050505090500194505050505060405180910390a161167183611695565b506001949350505050565b60008282018381101561168e57600080fd5b9392505050565b6000806060805b6005831015611714576117078460046000600887600581106116ba57fe5b600891828204019190066004029054906101000a900460e060020a02600160e060020a031916600160e060020a03191681526020019081526020016000205461167c90919063ffffffff16565b935060019092019161169c565b7f58445200000000000000000000000000000000000000000000000000000000006000527fff1c33bb980e6507c2f1abbbb539f436519cfa198453007a4295f347e328ef6b84905560056020527fc6095f8ba0c30294f3d36501e92c5966cb30d5606d2b235ecebf5abd9fffed92859055604080516001808252818301909252908160200160208202803883390190505091507f58445200000000000000000000000000000000000000000000000000000000008260008151811015156117d757fe5b600160e060020a03199290921660209283029190910182015260408051600180825281830190925291828101908038833950507f5844520000000000000000000000000000000000000000000000000000000000600090815260046020527fff1c33bb980e6507c2f1abbbb539f436519cfa198453007a4295f347e328ef6b54835193945092849250811061186857fe5b90602001906020020181815250507f7a72efae5f6b256f1ca71728b01f9dd7004ff3770dcaef4c44872b94d9f9e91b8282604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156118dd5781810151838201526020016118c5565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561191c578181015183820152602001611904565b5050505090500194505050505060405180910390a1505050505056004f6e6c792074686520636f6e7472616374206f776e6572206d617920706572666f726d207468697320616374696f6e0000000000000000000000000000000000a165627a7a723058206d2acb312f4828ef30c82a1d956131a57f4d89cff03a7d733617341f34f99cc400297a72efae5f6b256f1ca71728b01f9dd7004ff3770dcaef4c44872b94d9f9e91bff1c33bb980e6507c2f1abbbb539f436519cfa198453007a4295f347e328ef6b000000000000000000000000ea5e288b4f9d7e66da162e2af0db371783f62454000000000000000000000000ac1ed4fabbd5204e02950d68b6fc8c446ac95362000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000001534e580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000002c68af0bb140000
Deployed Bytecode
0x6080604052600436106101455763ffffffff60e060020a6000350416630ee4951b811461014a5780631627540c1461017157806317c70de4146101945780631d2fed16146101a957806320714f88146101ec5780633278c9601461020d5780633608069414610222578063370d62ad1461024457806353a47bb7146102645780635dc2944a1461029557806379ba50971461033a57806379cb657a1461034f5780637adbf973146103675780637dc0d1d01461038857806389f8ab941461039d5780638da5cb5b146103f25780639cb8a26a14610407578063a461fc821461041c578063aa687daf14610431578063af1ff97214610466578063b8225dec14610488578063bd32aa441461049d578063c0e59e4d146104b2578063c58aaae6146104d4578063de5eb832146104e9578063e1686e721461050b578063ea3d41091461052d575b600080fd5b34801561015657600080fd5b5061015f61054f565b60408051918252519081900360200190f35b34801561017d57600080fd5b50610192600160a060020a0360043516610555565b005b3480156101a057600080fd5b5061015f61061a565b3480156101b557600080fd5b506101d86024600480358281019290820135918135918201910135604435610620565b604080519115158252519081900360200190f35b3480156101f857600080fd5b50610192600160a060020a0360043516610718565b34801561021957600080fd5b5061019261086b565b34801561022e57600080fd5b50610192600160e060020a031960043516610909565b34801561025057600080fd5b506101d86004803560248101910135610a5e565b34801561027057600080fd5b50610279610b22565b60408051600160a060020a039092168252519081900360200190f35b3480156102a157600080fd5b50604080516020600480358082013583810280860185019096528085526102ea95369593946024949385019291829185019084908082843750949750610b319650505050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561032657818101518382015260200161030e565b505050509050019250505060405180910390f35b34801561034657600080fd5b50610192610bd1565b34801561035b57600080fd5b50610192600435610cd9565b34801561037357600080fd5b50610192600160a060020a0360043516610d78565b34801561039457600080fd5b50610279610e43565b3480156103a957600080fd5b50604080516020600480358082013583810280860185019096528085526102ea95369593946024949385019291829185019084908082843750949750610e529650505050505050565b3480156103fe57600080fd5b50610279610ef2565b34801561041357600080fd5b50610192610f01565b34801561042857600080fd5b5061015f6110c6565b34801561043d57600080fd5b506104496004356110cd565b60408051600160e060020a03199092168252519081900360200190f35b34801561047257600080fd5b5061015f600160e060020a0319600435166110fa565b34801561049457600080fd5b506101d861111a565b3480156104a957600080fd5b50610192611123565b3480156104be57600080fd5b5061015f600160e060020a0319600435166111d0565b3480156104e057600080fd5b506102796111ec565b3480156104f557600080fd5b5061015f600160e060020a031960043516611200565b34801561051757600080fd5b5061015f600160e060020a031960043516611212565b34801561053957600080fd5b506101d8600160e060020a031960043516611224565b60075481565b600054600160a060020a031633146105b9576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206119398339815191526044820152600080516020611959833981519152606482015290519081900360840190fd5b60018054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229181900360200190a150565b60025481565b600654600090600160a060020a031633146106ab576040805160e560020a62461bcd02815260206004820152602760248201527f4f6e6c7920746865206f7261636c652063616e20706572666f726d207468697360448201527f20616374696f6e00000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b61070e8686808060200260200160405190810160405280939291908181526020018383602002808284375050604080516020808c0282810182019093528b82529095508b94508a9350839250850190849080828437508994506112969350505050565b9695505050505050565b600054600160a060020a0316331461077c576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206119398339815191526044820152600080516020611959833981519152606482015290519081900360840190fd5b600160a060020a0381161515610802576040805160e560020a62461bcd02815260206004820152602860248201527f42656e6566696369617279206d757374206e6f7420626520746865207a65726f60448201527f2061646472657373000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60038054600160a060020a038316610100810274ffffffffffffffffffffffffffffffffffffffff00199092169190911790915560408051918252517fd5da63a0b864b315bc04128dedbc93888c8529ee6cf47ce664dc204339228c539181900360200190a150565b600054600160a060020a031633146108cf576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206119398339815191526044820152600080516020611959833981519152606482015290519081900360840190fd5b600060028190556003805460ff191690556040517f6adcc7125002935e0aa31697538ebbd65cfddf20431eb6ecdcfc3e238bfd082c9190a1565b600654600160a060020a03163314610991576040805160e560020a62461bcd02815260206004820152602760248201527f4f6e6c7920746865206f7261636c652063616e20706572666f726d207468697360448201527f20616374696f6e00000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160e060020a0319811660009081526004602052604081205411610a00576040805160e560020a62461bcd02815260206004820152600c60248201527f52617465206973207a65726f0000000000000000000000000000000000000000604482015290519081900360640190fd5b600160e060020a0319811660008181526004602090815260408083208390556005825280832092909255815192835290517f2cefb058ca1556b021b67f710e3df89c564650f01fef8cd944cbb14d7358680b9281900390910190a150565b6000805b82811015610b1657838382818110610a7657fe5b90506020020135600160e060020a031916600160e060020a0319167f735553440000000000000000000000000000000000000000000000000000000014158015610b00575042610afe600754600560008888878181101515610ad457fe5b60209081029290920135600160e060020a031916835250810191909152604001600020549061167c565b105b15610b0e5760019150610b1b565b600101610a62565b600091505b5092915050565b600154600160a060020a031681565b60608060008351604051908082528060200260200182016040528015610b61578160200160208202803883390190505b509150600090505b83518160ff161015610b1b5760046000858360ff16815181101515610b8a57fe5b6020908102909101810151600160e060020a0319168252810191909152604001600020548251839060ff8416908110610bbf57fe5b60209081029091010152600101610b69565b600154600160a060020a03163314610c59576040805160e560020a62461bcd02815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527f2063616e20616363657074206f776e6572736869700000000000000000000000606482015290519081900360840190fd5b60005460015460408051600160a060020a03938416815292909116602083015280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a1600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b600054600160a060020a03163314610d3d576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206119398339815191526044820152600080516020611959833981519152606482015290519081900360840190fd5b60078190556040805182815290517f16529d8c407b08938da67de7fa4319199baffce4f5d1971f812cc770b0237e669181900360200190a150565b600054600160a060020a03163314610ddc576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206119398339815191526044820152600080516020611959833981519152606482015290519081900360840190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03838116919091179182905560408051929091168252517f3df77beb5db05fcdd70a30fc8adf3f83f9501b68579455adbd100b8180940394916020908290030190a150565b600654600160a060020a031681565b60608060008351604051908082528060200260200182016040528015610e82578160200160208202803883390190505b509150600090505b83518160ff161015610b1b5760056000858360ff16815181101515610eab57fe5b6020908102909101810151600160e060020a0319168252810191909152604001600020548251839060ff8416908110610ee057fe5b60209081029091010152600101610e8a565b600054600160a060020a031681565b60008054600160a060020a03163314610f66576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206119398339815191526044820152600080516020611959833981519152606482015290519081900360840190fd5b60035460ff161515610fe8576040805160e560020a62461bcd02815260206004820152602860248201527f53656c6620646573747275637420686173206e6f7420796574206265656e206960448201527f6e69746961746564000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b426224ea006002540110151561106e576040805160e560020a62461bcd02815260206004820152602760248201527f53656c662064657374727563742064656c617920686173206e6f74207965742060448201527f656c617073656400000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b5060035460408051600160a060020a0361010090930492909216808352905190917f8a09e1677ced846cb537dc2b172043bd05a1a81ad7e0033a7ef8ba762df990b7919081900360200190a180600160a060020a0316ff5b6224ea0081565b600881600581106110da57fe5b60089182820401919006600402915054906101000a900460e060020a0281565b600160e060020a031981166000908152600460205260409020545b919050565b60035460ff1681565b600054600160a060020a03163314611187576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206119398339815191526044820152600080516020611959833981519152606482015290519081900360840190fd5b426002556003805460ff19166001179055604080516224ea00815290517fcbd94ca75b8dc45c9d80c77e851670e78843c0d75180cb81db3e2158228fa9a69181900360200190a1565b600160e060020a03191660009081526005602052604090205490565b6003546101009004600160a060020a031681565b60046020526000908152604090205481565b60056020526000908152604090205481565b60007f7355534400000000000000000000000000000000000000000000000000000000600160e060020a03198316141561126057506000611115565b600754600160e060020a03198316600090815260056020526040902054429161128f919063ffffffff61167c16565b1092915050565b6000808351855114151561131a576040805160e560020a62461bcd02815260206004820152603860248201527f43757272656e6379206b6579206172726179206c656e677468206d757374206d60448201527f61746368207261746573206172726179206c656e6774682e0000000000000000606482015290519081900360840190fd5b42610258018310611375576040805160e560020a62461bcd02815260206004820152601f60248201527f54696d6520697320746f6f2066617220696e746f207468652066757475726500604482015290519081900360640190fd5b5060005b84518110156115ad57838181518110151561139057fe5b602090810290910101511515611416576040805160e560020a62461bcd02815260206004820152603960248201527f5a65726f206973206e6f7420612076616c696420726174652c20706c6561736560448201527f2063616c6c2064656c6574655261746520696e73746561642e00000000000000606482015290519081900360840190fd5b848181518110151561142457fe5b90602001906020020151600160e060020a0319167f7355534400000000000000000000000000000000000000000000000000000000141515156114d7576040805160e560020a62461bcd02815260206004820152603160248201527f52617465206f6620735553442063616e6e6f7420626520757064617465642c2060448201527f6974277320616c7761797320554e49542e000000000000000000000000000000606482015290519081900360840190fd5b6005600086838151811015156114e957fe5b6020908102909101810151600160e060020a03191682528101919091526040016000205483106115a557838181518110151561152157fe5b9060200190602002015160046000878481518110151561153d57fe5b90602001906020020151600160e060020a031916600160e060020a0319168152602001908152602001600020819055508260056000878481518110151561158057fe5b6020908102909101810151600160e060020a0319168252810191909152604001600020555b600101611379565b7f7a72efae5f6b256f1ca71728b01f9dd7004ff3770dcaef4c44872b94d9f9e91b8585604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156116145781810151838201526020016115fc565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561165357818101518382015260200161163b565b5050505090500194505050505060405180910390a161167183611695565b506001949350505050565b60008282018381101561168e57600080fd5b9392505050565b6000806060805b6005831015611714576117078460046000600887600581106116ba57fe5b600891828204019190066004029054906101000a900460e060020a02600160e060020a031916600160e060020a03191681526020019081526020016000205461167c90919063ffffffff16565b935060019092019161169c565b7f58445200000000000000000000000000000000000000000000000000000000006000527fff1c33bb980e6507c2f1abbbb539f436519cfa198453007a4295f347e328ef6b84905560056020527fc6095f8ba0c30294f3d36501e92c5966cb30d5606d2b235ecebf5abd9fffed92859055604080516001808252818301909252908160200160208202803883390190505091507f58445200000000000000000000000000000000000000000000000000000000008260008151811015156117d757fe5b600160e060020a03199290921660209283029190910182015260408051600180825281830190925291828101908038833950507f5844520000000000000000000000000000000000000000000000000000000000600090815260046020527fff1c33bb980e6507c2f1abbbb539f436519cfa198453007a4295f347e328ef6b54835193945092849250811061186857fe5b90602001906020020181815250507f7a72efae5f6b256f1ca71728b01f9dd7004ff3770dcaef4c44872b94d9f9e91b8282604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156118dd5781810151838201526020016118c5565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561191c578181015183820152602001611904565b5050505090500194505050505060405180910390a1505050505056004f6e6c792074686520636f6e7472616374206f776e6572206d617920706572666f726d207468697320616374696f6e0000000000000000000000000000000000a165627a7a723058206d2acb312f4828ef30c82a1d956131a57f4d89cff03a7d733617341f34f99cc40029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000ea5e288b4f9d7e66da162e2af0db371783f62454000000000000000000000000ac1ed4fabbd5204e02950d68b6fc8c446ac95362000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000001534e580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000002c68af0bb140000
-----Decoded View---------------
Arg [0] : _owner (address): 0xeA5e288b4f9d7e66DA162E2Af0dB371783f62454
Arg [1] : _oracle (address): 0xaC1ED4Fabbd5204E02950D68b6FC8c446AC95362
Arg [2] : _currencyKeys (bytes4[]): System.Byte[]
Arg [3] : _newRates (uint256[]): 200000000000000000
-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 000000000000000000000000ea5e288b4f9d7e66da162e2af0db371783f62454
Arg [1] : 000000000000000000000000ac1ed4fabbd5204e02950d68b6fc8c446ac95362
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [3] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [5] : 534e580000000000000000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [7] : 00000000000000000000000000000000000000000000000002c68af0bb140000
Swarm Source
bzzr://6d2acb312f4828ef30c82a1d956131a57f4d89cff03a7d733617341f34f99cc4
Loading...
Loading
Loading...
Loading
OVERVIEW
The legacy address for Synthetix: Exchange Rates contract.Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.