Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
TimeHelpers
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: AGPL-3.0-only /* TimeHelpers.sol - SKALE Manager Copyright (C) 2019-Present SKALE Labs @author Dmytro Stebaiev SKALE Manager is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. SKALE Manager is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with SKALE Manager. If not, see <https://www.gnu.org/licenses/>. */ pragma solidity 0.8.17; import { ITimeHelpers } from "@skalenetwork/skale-manager-interfaces/delegation/ITimeHelpers.sol"; import { BokkyPooBahsDateTimeLibrary } from "../thirdparty/BokkyPooBahsDateTimeLibrary.sol"; /** * @title TimeHelpers * @dev The contract performs time operations. * * These functions are used to calculate monthly and Proof of Use epochs. */ contract TimeHelpers is ITimeHelpers { uint256 constant private _ZERO_YEAR = 2020; function calculateProofOfUseLockEndTime(uint256 month, uint256 lockUpPeriodDays) external view override returns (uint256 timestamp) { timestamp = BokkyPooBahsDateTimeLibrary.addDays(monthToTimestamp(month), lockUpPeriodDays); } function getCurrentMonth() external view virtual override returns (uint256 month) { return timestampToMonth(block.timestamp); } function timestampToYear(uint256 timestamp) external view virtual override returns (uint256 year) { (year, , ) = BokkyPooBahsDateTimeLibrary.timestampToDate(timestamp); require(year >= _ZERO_YEAR, "Timestamp is too far in the past"); return year - _ZERO_YEAR; } function addDays(uint256 fromTimestamp, uint256 n) external pure override returns (uint256 result) { return BokkyPooBahsDateTimeLibrary.addDays(fromTimestamp, n); } function addMonths(uint256 fromTimestamp, uint256 n) external pure override returns (uint256 result) { return BokkyPooBahsDateTimeLibrary.addMonths(fromTimestamp, n); } function addYears(uint256 fromTimestamp, uint256 n) external pure override returns (uint256 result) { return BokkyPooBahsDateTimeLibrary.addYears(fromTimestamp, n); } function timestampToMonth(uint256 timestamp) public view virtual override returns (uint256 month) { uint256 year; (year, month, ) = BokkyPooBahsDateTimeLibrary.timestampToDate(timestamp); require(year >= _ZERO_YEAR, "Timestamp is too far in the past"); month = month - 1 + (year - _ZERO_YEAR) * 12; require(month > 0, "Timestamp is too far in the past"); return month; } function monthToTimestamp(uint256 month) public view virtual override returns (uint256 timestamp) { uint256 year = _ZERO_YEAR; uint256 _month = month; year = year + _month / 12; _month = _month % 12; _month = _month + 1; return BokkyPooBahsDateTimeLibrary.timestampFromDate(year, _month, 1); } }
// SPDX-License-Identifier: AGPL-3.0-only /* ITimeHelpers.sol - SKALE Manager Copyright (C) 2018-Present SKALE Labs @author Artem Payvin SKALE Manager is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. SKALE Manager is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with SKALE Manager. If not, see <https://www.gnu.org/licenses/>. */ pragma solidity >=0.6.10 <0.9.0; interface ITimeHelpers { function calculateProofOfUseLockEndTime(uint month, uint lockUpPeriodDays) external view returns (uint timestamp); function getCurrentMonth() external view returns (uint); function timestampToYear(uint timestamp) external view returns (uint); function timestampToMonth(uint timestamp) external view returns (uint); function monthToTimestamp(uint month) external view returns (uint timestamp); function addDays(uint fromTimestamp, uint n) external pure returns (uint); function addMonths(uint fromTimestamp, uint n) external pure returns (uint); function addYears(uint fromTimestamp, uint n) external pure returns (uint); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; // ---------------------------------------------------------------------------- // BokkyPooBah's DateTime Library v1.01 // // A gas-efficient Solidity date and time library // // https://github.com/bokkypoobah/BokkyPooBahsDateTimeLibrary // // Tested date range 1970/01/01 to 2345/12/31 // // Conventions: // Unit | Range | Notes // :-------- |:-------------:|:----- // timestamp | >= 0 | Unix timestamp, number of seconds since 1970/01/01 00:00:00 UTC // year | 1970 ... 2345 | // month | 1 ... 12 | // day | 1 ... 31 | // hour | 0 ... 23 | // minute | 0 ... 59 | // second | 0 ... 59 | // dayOfWeek | 1 ... 7 | 1 = Monday, ..., 7 = Sunday // // // Enjoy. (c) BokkyPooBah / Bok Consulting Pty Ltd 2018-2019. The MIT Licence. // ---------------------------------------------------------------------------- library BokkyPooBahsDateTimeLibrary { uint constant SECONDS_PER_DAY = 24 * 60 * 60; uint constant SECONDS_PER_HOUR = 60 * 60; uint constant SECONDS_PER_MINUTE = 60; int constant OFFSET19700101 = 2440588; uint constant DOW_MON = 1; uint constant DOW_TUE = 2; uint constant DOW_WED = 3; uint constant DOW_THU = 4; uint constant DOW_FRI = 5; uint constant DOW_SAT = 6; uint constant DOW_SUN = 7; // ------------------------------------------------------------------------ // Calculate the number of days from 1970/01/01 to year/month/day using // the date conversion algorithm from // http://aa.usno.navy.mil/faq/docs/JD_Formula.php // and subtracting the offset 2440588 so that 1970/01/01 is day 0 // // days = day // - 32075 // + 1461 * (year + 4800 + (month - 14) / 12) / 4 // + 367 * (month - 2 - (month - 14) / 12 * 12) / 12 // - 3 * ((year + 4900 + (month - 14) / 12) / 100) / 4 // - offset // ------------------------------------------------------------------------ function _daysFromDate(uint year, uint month, uint day) internal pure returns (uint _days) { require(year >= 1970); int _year = int(year); int _month = int(month); int _day = int(day); int __days = _day - 32075 + 1461 * (_year + 4800 + (_month - 14) / 12) / 4 + 367 * (_month - 2 - (_month - 14) / 12 * 12) / 12 - 3 * ((_year + 4900 + (_month - 14) / 12) / 100) / 4 - OFFSET19700101; _days = uint(__days); } // ------------------------------------------------------------------------ // Calculate year/month/day from the number of days since 1970/01/01 using // the date conversion algorithm from // http://aa.usno.navy.mil/faq/docs/JD_Formula.php // and adding the offset 2440588 so that 1970/01/01 is day 0 // // int L = days + 68569 + offset // int N = 4 * L / 146097 // L = L - (146097 * N + 3) / 4 // year = 4000 * (L + 1) / 1461001 // L = L - 1461 * year / 4 + 31 // month = 80 * L / 2447 // dd = L - 2447 * month / 80 // L = month / 11 // month = month + 2 - 12 * L // year = 100 * (N - 49) + year + L // ------------------------------------------------------------------------ function _daysToDate(uint _days) internal pure returns (uint year, uint month, uint day) { int __days = int(_days); int L = __days + 68569 + OFFSET19700101; int N = 4 * L / 146097; L = L - (146097 * N + 3) / 4; int _year = 4000 * (L + 1) / 1461001; L = L - 1461 * _year / 4 + 31; int _month = 80 * L / 2447; int _day = L - 2447 * _month / 80; L = _month / 11; _month = _month + 2 - 12 * L; _year = 100 * (N - 49) + _year + L; year = uint(_year); month = uint(_month); day = uint(_day); } function timestampFromDate(uint year, uint month, uint day) internal pure returns (uint timestamp) { timestamp = _daysFromDate(year, month, day) * SECONDS_PER_DAY; } function timestampFromDateTime(uint year, uint month, uint day, uint hour, uint minute, uint second) internal pure returns (uint timestamp) { timestamp = _daysFromDate(year, month, day) * SECONDS_PER_DAY + hour * SECONDS_PER_HOUR + minute * SECONDS_PER_MINUTE + second; } function timestampToDate(uint timestamp) internal pure returns (uint year, uint month, uint day) { (year, month, day) = _daysToDate(timestamp / SECONDS_PER_DAY); } function timestampToDateTime(uint timestamp) internal pure returns (uint year, uint month, uint day, uint hour, uint minute, uint second) { (year, month, day) = _daysToDate(timestamp / SECONDS_PER_DAY); uint secs = timestamp % SECONDS_PER_DAY; hour = secs / SECONDS_PER_HOUR; secs = secs % SECONDS_PER_HOUR; minute = secs / SECONDS_PER_MINUTE; second = secs % SECONDS_PER_MINUTE; } function isValidDate(uint year, uint month, uint day) internal pure returns (bool valid) { if (year >= 1970 && month > 0 && month <= 12) { uint daysInMonth = _getDaysInMonth(year, month); if (day > 0 && day <= daysInMonth) { valid = true; } } } function isValidDateTime(uint year, uint month, uint day, uint hour, uint minute, uint second) internal pure returns (bool valid) { if (isValidDate(year, month, day)) { if (hour < 24 && minute < 60 && second < 60) { valid = true; } } } function isLeapYear(uint timestamp) internal pure returns (bool leapYear) { uint year; uint month; uint day; (year, month, day) = _daysToDate(timestamp / SECONDS_PER_DAY); leapYear = _isLeapYear(year); } function _isLeapYear(uint year) internal pure returns (bool leapYear) { leapYear = ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0); } function isWeekDay(uint timestamp) internal pure returns (bool weekDay) { weekDay = getDayOfWeek(timestamp) <= DOW_FRI; } function isWeekEnd(uint timestamp) internal pure returns (bool weekEnd) { weekEnd = getDayOfWeek(timestamp) >= DOW_SAT; } function getDaysInMonth(uint timestamp) internal pure returns (uint daysInMonth) { uint year; uint month; uint day; (year, month, day) = _daysToDate(timestamp / SECONDS_PER_DAY); daysInMonth = _getDaysInMonth(year, month); } function _getDaysInMonth(uint year, uint month) internal pure returns (uint daysInMonth) { if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) { daysInMonth = 31; } else if (month != 2) { daysInMonth = 30; } else { daysInMonth = _isLeapYear(year) ? 29 : 28; } } // 1 = Monday, 7 = Sunday function getDayOfWeek(uint timestamp) internal pure returns (uint dayOfWeek) { uint _days = timestamp / SECONDS_PER_DAY; dayOfWeek = (_days + 3) % 7 + 1; } function getYear(uint timestamp) internal pure returns (uint year) { uint month; uint day; (year, month, day) = _daysToDate(timestamp / SECONDS_PER_DAY); } function getMonth(uint timestamp) internal pure returns (uint month) { uint year; uint day; (year, month, day) = _daysToDate(timestamp / SECONDS_PER_DAY); } function getDay(uint timestamp) internal pure returns (uint day) { uint year; uint month; (year, month, day) = _daysToDate(timestamp / SECONDS_PER_DAY); } function getHour(uint timestamp) internal pure returns (uint hour) { uint secs = timestamp % SECONDS_PER_DAY; hour = secs / SECONDS_PER_HOUR; } function getMinute(uint timestamp) internal pure returns (uint minute) { uint secs = timestamp % SECONDS_PER_HOUR; minute = secs / SECONDS_PER_MINUTE; } function getSecond(uint timestamp) internal pure returns (uint second) { second = timestamp % SECONDS_PER_MINUTE; } function addYears(uint timestamp, uint _years) internal pure returns (uint newTimestamp) { uint year; uint month; uint day; (year, month, day) = _daysToDate(timestamp / SECONDS_PER_DAY); year += _years; uint daysInMonth = _getDaysInMonth(year, month); if (day > daysInMonth) { day = daysInMonth; } newTimestamp = _daysFromDate(year, month, day) * SECONDS_PER_DAY + timestamp % SECONDS_PER_DAY; require(newTimestamp >= timestamp); } function addMonths(uint timestamp, uint _months) internal pure returns (uint newTimestamp) { uint year; uint month; uint day; (year, month, day) = _daysToDate(timestamp / SECONDS_PER_DAY); month += _months; year += (month - 1) / 12; month = (month - 1) % 12 + 1; uint daysInMonth = _getDaysInMonth(year, month); if (day > daysInMonth) { day = daysInMonth; } newTimestamp = _daysFromDate(year, month, day) * SECONDS_PER_DAY + timestamp % SECONDS_PER_DAY; require(newTimestamp >= timestamp); } function addDays(uint timestamp, uint _days) internal pure returns (uint newTimestamp) { newTimestamp = timestamp + _days * SECONDS_PER_DAY; require(newTimestamp >= timestamp); } function addHours(uint timestamp, uint _hours) internal pure returns (uint newTimestamp) { newTimestamp = timestamp + _hours * SECONDS_PER_HOUR; require(newTimestamp >= timestamp); } function addMinutes(uint timestamp, uint _minutes) internal pure returns (uint newTimestamp) { newTimestamp = timestamp + _minutes * SECONDS_PER_MINUTE; require(newTimestamp >= timestamp); } function addSeconds(uint timestamp, uint _seconds) internal pure returns (uint newTimestamp) { newTimestamp = timestamp + _seconds; require(newTimestamp >= timestamp); } function subYears(uint timestamp, uint _years) internal pure returns (uint newTimestamp) { uint year; uint month; uint day; (year, month, day) = _daysToDate(timestamp / SECONDS_PER_DAY); year -= _years; uint daysInMonth = _getDaysInMonth(year, month); if (day > daysInMonth) { day = daysInMonth; } newTimestamp = _daysFromDate(year, month, day) * SECONDS_PER_DAY + timestamp % SECONDS_PER_DAY; require(newTimestamp <= timestamp); } function subMonths(uint timestamp, uint _months) internal pure returns (uint newTimestamp) { uint year; uint month; uint day; (year, month, day) = _daysToDate(timestamp / SECONDS_PER_DAY); uint yearMonth = year * 12 + (month - 1) - _months; year = yearMonth / 12; month = yearMonth % 12 + 1; uint daysInMonth = _getDaysInMonth(year, month); if (day > daysInMonth) { day = daysInMonth; } newTimestamp = _daysFromDate(year, month, day) * SECONDS_PER_DAY + timestamp % SECONDS_PER_DAY; require(newTimestamp <= timestamp); } function subDays(uint timestamp, uint _days) internal pure returns (uint newTimestamp) { newTimestamp = timestamp - _days * SECONDS_PER_DAY; require(newTimestamp <= timestamp); } function subHours(uint timestamp, uint _hours) internal pure returns (uint newTimestamp) { newTimestamp = timestamp - _hours * SECONDS_PER_HOUR; require(newTimestamp <= timestamp); } function subMinutes(uint timestamp, uint _minutes) internal pure returns (uint newTimestamp) { newTimestamp = timestamp - _minutes * SECONDS_PER_MINUTE; require(newTimestamp <= timestamp); } function subSeconds(uint timestamp, uint _seconds) internal pure returns (uint newTimestamp) { newTimestamp = timestamp - _seconds; require(newTimestamp <= timestamp); } function diffYears(uint fromTimestamp, uint toTimestamp) internal pure returns (uint _years) { require(fromTimestamp <= toTimestamp); uint fromYear; uint fromMonth; uint fromDay; uint toYear; uint toMonth; uint toDay; (fromYear, fromMonth, fromDay) = _daysToDate(fromTimestamp / SECONDS_PER_DAY); (toYear, toMonth, toDay) = _daysToDate(toTimestamp / SECONDS_PER_DAY); _years = toYear - fromYear; } function diffMonths(uint fromTimestamp, uint toTimestamp) internal pure returns (uint _months) { require(fromTimestamp <= toTimestamp); uint fromYear; uint fromMonth; uint fromDay; uint toYear; uint toMonth; uint toDay; (fromYear, fromMonth, fromDay) = _daysToDate(fromTimestamp / SECONDS_PER_DAY); (toYear, toMonth, toDay) = _daysToDate(toTimestamp / SECONDS_PER_DAY); _months = toYear * 12 + toMonth - fromYear * 12 - fromMonth; } function diffDays(uint fromTimestamp, uint toTimestamp) internal pure returns (uint _days) { require(fromTimestamp <= toTimestamp); _days = (toTimestamp - fromTimestamp) / SECONDS_PER_DAY; } function diffHours(uint fromTimestamp, uint toTimestamp) internal pure returns (uint _hours) { require(fromTimestamp <= toTimestamp); _hours = (toTimestamp - fromTimestamp) / SECONDS_PER_HOUR; } function diffMinutes(uint fromTimestamp, uint toTimestamp) internal pure returns (uint _minutes) { require(fromTimestamp <= toTimestamp); _minutes = (toTimestamp - fromTimestamp) / SECONDS_PER_MINUTE; } function diffSeconds(uint fromTimestamp, uint toTimestamp) internal pure returns (uint _seconds) { require(fromTimestamp <= toTimestamp); _seconds = toTimestamp - fromTimestamp; } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint256","name":"fromTimestamp","type":"uint256"},{"internalType":"uint256","name":"n","type":"uint256"}],"name":"addDays","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"fromTimestamp","type":"uint256"},{"internalType":"uint256","name":"n","type":"uint256"}],"name":"addMonths","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"fromTimestamp","type":"uint256"},{"internalType":"uint256","name":"n","type":"uint256"}],"name":"addYears","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"month","type":"uint256"},{"internalType":"uint256","name":"lockUpPeriodDays","type":"uint256"}],"name":"calculateProofOfUseLockEndTime","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentMonth","outputs":[{"internalType":"uint256","name":"month","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"month","type":"uint256"}],"name":"monthToTimestamp","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"timestampToMonth","outputs":[{"internalType":"uint256","name":"month","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"timestampToYear","outputs":[{"internalType":"uint256","name":"year","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50610960806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063568b55b21161005b578063568b55b2146100eb5780637217523c146100fe578063bf64d84914610111578063ddd1b67e1461012457600080fd5b80632713b2c61461008d5780634355644d146100b2578063442b8c79146100c5578063489a636f146100d8575b600080fd5b6100a061009b36600461077c565b61012c565b60405190815260200160405180910390f35b6100a06100c036600461077c565b610147565b6100a06100d336600461077c565b610159565b6100a06100e636600461079e565b610165565b6100a06100f936600461079e565b6101ac565b6100a061010c36600461077c565b6101f7565b6100a061011f36600461079e565b610203565b6100a061028a565b600061014061013a846101ac565b8361029a565b9392505050565b600061014083836102c2565b92915050565b60006101408383610399565b6000610170826103cd565b50909150506107e48110156101a05760405162461bcd60e51b8152600401610197906107b7565b60405180910390fd5b6101536107e482610802565b60006107e4826101bd600c8261082b565b6101c7908361083f565b91506101d4600c82610852565b90506101e181600161083f565b90506101ef828260016103ee565b949350505050565b6000610140838361029a565b60008061020f836103cd565b50925090506107e48110156102365760405162461bcd60e51b8152600401610197906107b7565b6102426107e482610802565b61024d90600c610866565b610258600184610802565b610262919061083f565b9150600082116102845760405162461bcd60e51b8152600401610197906107b7565b50919050565b600061029542610203565b905090565b60006102a96201518083610866565b6102b3908461083f565b90508281101561015357600080fd5b60008080806102dc6102d7620151808861082b565b610409565b919450925090506102ed858361083f565b9150600c6102fc600184610802565b610306919061082b565b610310908461083f565b9250600c61031f600184610802565b6103299190610852565b61033490600161083f565b91506000610342848461057d565b905080821115610350578091505b61035d6201518088610852565b6201518061036c868686610603565b6103769190610866565b610380919061083f565b94508685101561038f57600080fd5b5050505092915050565b60008080806103ae6102d7620151808861082b565b919450925090506103bf858461083f565b92506000610342848461057d565b600080806103e16102d7620151808661082b565b9196909550909350915050565b6000620151806103ff858585610603565b6101ef9190610866565b60008080838162253d8c6104208362010bd961087d565b61042a919061087d565b9050600062023ab161043d8360046108a5565b61044791906108d5565b905060046104588262023ab16108a5565b61046390600361087d565b61046d91906108d5565b6104779083610903565b9150600062164b0961048a84600161087d565b61049690610fa06108a5565b6104a091906108d5565b905060046104b0826105b56108a5565b6104ba91906108d5565b6104c49084610903565b6104cf90601f61087d565b9250600061098f6104e18560506108a5565b6104eb91906108d5565b9050600060506104fd8361098f6108a5565b61050791906108d5565b6105119086610903565b905061051e600b836108d5565b945061052b85600c6108a5565b61053683600261087d565b6105409190610903565b9150848361054f603187610903565b61055a9060646108a5565b610564919061087d565b61056e919061087d565b9a919950975095505050505050565b6000816001148061058e5750816003145b806105995750816005145b806105a45750816007145b806105af5750816008145b806105ba575081600a145b806105c5575081600c145b156105d25750601f610153565b816002146105e25750601e610153565b6105eb83610740565b6105f657601c6105f9565b601d5b60ff169392505050565b60006107b284101561061457600080fd5b838383600062253d8c60046064600c61062e600e88610903565b61063891906108d5565b6106448861132461087d565b61064e919061087d565b61065891906108d5565b6106639060036108a5565b61066d91906108d5565b600c8061067b600e88610903565b61068591906108d5565b61069090600c6108a5565b61069b600288610903565b6106a59190610903565b6106b19061016f6108a5565b6106bb91906108d5565b6004600c6106ca600e89610903565b6106d491906108d5565b6106e0896112c061087d565b6106ea919061087d565b6106f6906105b56108a5565b61070091906108d5565b61070c617d4b87610903565b610716919061087d565b610720919061087d565b61072a9190610903565b6107349190610903565b98975050505050505050565b600061074d600483610852565b1580156107635750610760606483610852565b15155b80610153575061077561019083610852565b1592915050565b6000806040838503121561078f57600080fd5b50508035926020909101359150565b6000602082840312156107b057600080fd5b5035919050565b6020808252818101527f54696d657374616d7020697320746f6f2066617220696e207468652070617374604082015260600190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610153576101536107ec565b634e487b7160e01b600052601260045260246000fd5b60008261083a5761083a610815565b500490565b80820180821115610153576101536107ec565b60008261086157610861610815565b500690565b8082028115828204841417610153576101536107ec565b808201828112600083128015821682158216171561089d5761089d6107ec565b505092915050565b80820260008212600160ff1b841416156108c1576108c16107ec565b8181058314821517610153576101536107ec565b6000826108e4576108e4610815565b600160ff1b8214600019841416156108fe576108fe6107ec565b500590565b8181036000831280158383131683831282161715610923576109236107ec565b509291505056fea2646970667358221220520c8a16dab0b8466662d76def13ac7bedbabafe044151790138b1ca6adb327164736f6c63430008110033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063568b55b21161005b578063568b55b2146100eb5780637217523c146100fe578063bf64d84914610111578063ddd1b67e1461012457600080fd5b80632713b2c61461008d5780634355644d146100b2578063442b8c79146100c5578063489a636f146100d8575b600080fd5b6100a061009b36600461077c565b61012c565b60405190815260200160405180910390f35b6100a06100c036600461077c565b610147565b6100a06100d336600461077c565b610159565b6100a06100e636600461079e565b610165565b6100a06100f936600461079e565b6101ac565b6100a061010c36600461077c565b6101f7565b6100a061011f36600461079e565b610203565b6100a061028a565b600061014061013a846101ac565b8361029a565b9392505050565b600061014083836102c2565b92915050565b60006101408383610399565b6000610170826103cd565b50909150506107e48110156101a05760405162461bcd60e51b8152600401610197906107b7565b60405180910390fd5b6101536107e482610802565b60006107e4826101bd600c8261082b565b6101c7908361083f565b91506101d4600c82610852565b90506101e181600161083f565b90506101ef828260016103ee565b949350505050565b6000610140838361029a565b60008061020f836103cd565b50925090506107e48110156102365760405162461bcd60e51b8152600401610197906107b7565b6102426107e482610802565b61024d90600c610866565b610258600184610802565b610262919061083f565b9150600082116102845760405162461bcd60e51b8152600401610197906107b7565b50919050565b600061029542610203565b905090565b60006102a96201518083610866565b6102b3908461083f565b90508281101561015357600080fd5b60008080806102dc6102d7620151808861082b565b610409565b919450925090506102ed858361083f565b9150600c6102fc600184610802565b610306919061082b565b610310908461083f565b9250600c61031f600184610802565b6103299190610852565b61033490600161083f565b91506000610342848461057d565b905080821115610350578091505b61035d6201518088610852565b6201518061036c868686610603565b6103769190610866565b610380919061083f565b94508685101561038f57600080fd5b5050505092915050565b60008080806103ae6102d7620151808861082b565b919450925090506103bf858461083f565b92506000610342848461057d565b600080806103e16102d7620151808661082b565b9196909550909350915050565b6000620151806103ff858585610603565b6101ef9190610866565b60008080838162253d8c6104208362010bd961087d565b61042a919061087d565b9050600062023ab161043d8360046108a5565b61044791906108d5565b905060046104588262023ab16108a5565b61046390600361087d565b61046d91906108d5565b6104779083610903565b9150600062164b0961048a84600161087d565b61049690610fa06108a5565b6104a091906108d5565b905060046104b0826105b56108a5565b6104ba91906108d5565b6104c49084610903565b6104cf90601f61087d565b9250600061098f6104e18560506108a5565b6104eb91906108d5565b9050600060506104fd8361098f6108a5565b61050791906108d5565b6105119086610903565b905061051e600b836108d5565b945061052b85600c6108a5565b61053683600261087d565b6105409190610903565b9150848361054f603187610903565b61055a9060646108a5565b610564919061087d565b61056e919061087d565b9a919950975095505050505050565b6000816001148061058e5750816003145b806105995750816005145b806105a45750816007145b806105af5750816008145b806105ba575081600a145b806105c5575081600c145b156105d25750601f610153565b816002146105e25750601e610153565b6105eb83610740565b6105f657601c6105f9565b601d5b60ff169392505050565b60006107b284101561061457600080fd5b838383600062253d8c60046064600c61062e600e88610903565b61063891906108d5565b6106448861132461087d565b61064e919061087d565b61065891906108d5565b6106639060036108a5565b61066d91906108d5565b600c8061067b600e88610903565b61068591906108d5565b61069090600c6108a5565b61069b600288610903565b6106a59190610903565b6106b19061016f6108a5565b6106bb91906108d5565b6004600c6106ca600e89610903565b6106d491906108d5565b6106e0896112c061087d565b6106ea919061087d565b6106f6906105b56108a5565b61070091906108d5565b61070c617d4b87610903565b610716919061087d565b610720919061087d565b61072a9190610903565b6107349190610903565b98975050505050505050565b600061074d600483610852565b1580156107635750610760606483610852565b15155b80610153575061077561019083610852565b1592915050565b6000806040838503121561078f57600080fd5b50508035926020909101359150565b6000602082840312156107b057600080fd5b5035919050565b6020808252818101527f54696d657374616d7020697320746f6f2066617220696e207468652070617374604082015260600190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610153576101536107ec565b634e487b7160e01b600052601260045260246000fd5b60008261083a5761083a610815565b500490565b80820180821115610153576101536107ec565b60008261086157610861610815565b500690565b8082028115828204841417610153576101536107ec565b808201828112600083128015821682158216171561089d5761089d6107ec565b505092915050565b80820260008212600160ff1b841416156108c1576108c16107ec565b8181058314821517610153576101536107ec565b6000826108e4576108e4610815565b600160ff1b8214600019841416156108fe576108fe6107ec565b500590565b8181036000831280158383131683831282161715610923576109236107ec565b509291505056fea2646970667358221220520c8a16dab0b8466662d76def13ac7bedbabafe044151790138b1ca6adb327164736f6c63430008110033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
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.