Contract Overview
Balance:
0 FTM
FTM Value:
$0.00
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Latest 6 internal transactions
Parent Txn Hash | Block | From | To | Value | |||
---|---|---|---|---|---|---|---|
0xd7192ba73bf5550c7f03a2013ad70967d2b38ed31d2d77b222e45ac1ba4268a6 | 50822143 | 136 days 4 hrs ago | 0xf1febd6e744e985a2024e7223da61c670fcf1233 | Contract Creation | 0 FTM | ||
0x7b1255033ec1dcf41cf40e7a27ff6ebe273f26b0da8bfb1f5f47c50a613ecb56 | 50821846 | 136 days 4 hrs ago | 0xf1febd6e744e985a2024e7223da61c670fcf1233 | Contract Creation | 0 FTM | ||
0xef43e489fcdf3244746e02223e3c3aba57360252dce9ed24123be5bff7f4dcf6 | 49971014 | 155 days 6 hrs ago | 0xf1febd6e744e985a2024e7223da61c670fcf1233 | Contract Creation | 0 FTM | ||
0x80b6c54eff06ec93ecc799c68f07140b363886b6a8d11871596b43ee63c92156 | 49971002 | 155 days 6 hrs ago | 0xf1febd6e744e985a2024e7223da61c670fcf1233 | Contract Creation | 0 FTM | ||
0xaaf178aaa1865576ebc1b60b9ebdfe9967680dd15dac9b84b0fc9a0e1f1503a8 | 49970993 | 155 days 6 hrs ago | 0xf1febd6e744e985a2024e7223da61c670fcf1233 | Contract Creation | 0 FTM | ||
0x82c00aad62451149e88dbaf741ba77e07809e5a79ed02008e6ceada8206bb6ff | 49970979 | 155 days 6 hrs ago | 0x6ba58cd30014a861b11ed429200bd1dd8277dcf7 | Contract Creation | 0 FTM |
[ Download CSV Export ]
Contract Name:
ConfigFactory
Compiler Version
v0.8.12+commit.f00d7308
Optimization Enabled:
Yes with 100000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// Be name Khoda // SPDX-License-Identifier: GPL-3.0 // ================================================================================================================= // _|_|_| _|_|_|_| _| _| _|_|_| _|_|_|_| _| | // _| _| _| _| _| _| _| _|_|_| _|_|_| _|_|_| _|_|_| _|_| | // _| _| _|_|_| _| _| _|_| _|_|_| _| _| _| _| _| _| _| _| _|_|_|_| | // _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| | // _|_|_| _|_|_|_| _|_| _|_|_| _| _| _| _| _|_|_| _| _| _|_|_| _|_|_| | // ================================================================================================================= // ================ Config Factory ================ // =============================================== // DEUS Finance: https://github.com/deusfinance // Primary Author(s) // MRM: https://github.com/smrm-dev pragma solidity 0.8.12; import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol"; import {Config} from "./Config.sol"; import {IConfigFactory} from "./interfaces/IConfigFactory.sol"; /// @title Deploy Configs and keep track of it /// @author DEUS Finance contract ConfigFactory is IConfigFactory { mapping(uint256 => ConfigDescription) public deployedConfigs; uint256 public deployedConfigsCount; constructor() {} /// @notice Depolys config /// @param setter Setter role of config /// @param admin Admin role of config function deployConfig( string memory description, uint256 validPriceGap, address setter, address admin ) external { Config config = new Config(description, validPriceGap, setter, admin); deployedConfigs[deployedConfigsCount] = ConfigDescription({ addr: address(config), description: description }); emit DeployConfig(deployedConfigsCount, setter, admin); deployedConfigsCount += 1; } } // Dar panah khoda
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/AccessControl.sol) pragma solidity ^0.8.0; import "./IAccessControl.sol"; import "../utils/Context.sol"; import "../utils/Strings.sol"; import "../utils/introspection/ERC165.sol"; /** * @dev Contract module that allows children to implement role-based access * control mechanisms. This is a lightweight version that doesn't allow enumerating role * members except through off-chain means by accessing the contract event logs. Some * applications may benefit from on-chain enumerability, for those cases see * {AccessControlEnumerable}. * * Roles are referred to by their `bytes32` identifier. These should be exposed * in the external API and be unique. The best way to achieve this is by * using `public constant` hash digests: * * ``` * bytes32 public constant MY_ROLE = keccak256("MY_ROLE"); * ``` * * Roles can be used to represent a set of permissions. To restrict access to a * function call, use {hasRole}: * * ``` * function foo() public { * require(hasRole(MY_ROLE, msg.sender)); * ... * } * ``` * * Roles can be granted and revoked dynamically via the {grantRole} and * {revokeRole} functions. Each role has an associated admin role, and only * accounts that have a role's admin role can call {grantRole} and {revokeRole}. * * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means * that only accounts with this role will be able to grant or revoke other * roles. More complex role relationships can be created by using * {_setRoleAdmin}. * * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to * grant and revoke this role. Extra precautions should be taken to secure * accounts that have been granted it. */ abstract contract AccessControl is Context, IAccessControl, ERC165 { struct RoleData { mapping(address => bool) members; bytes32 adminRole; } mapping(bytes32 => RoleData) private _roles; bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; /** * @dev Modifier that checks that an account has a specific role. Reverts * with a standardized message including the required role. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ * * _Available since v4.1._ */ modifier onlyRole(bytes32 role) { _checkRole(role); _; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId); } /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) public view virtual override returns (bool) { return _roles[role].members[account]; } /** * @dev Revert with a standard message if `_msgSender()` is missing `role`. * Overriding this function changes the behavior of the {onlyRole} modifier. * * Format of the revert message is described in {_checkRole}. * * _Available since v4.6._ */ function _checkRole(bytes32 role) internal view virtual { _checkRole(role, _msgSender()); } /** * @dev Revert with a standard message if `account` is missing `role`. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ */ function _checkRole(bytes32 role, address account) internal view virtual { if (!hasRole(role, account)) { revert( string( abi.encodePacked( "AccessControl: account ", Strings.toHexString(uint160(account), 20), " is missing role ", Strings.toHexString(uint256(role), 32) ) ) ); } } /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) { return _roles[role].adminRole; } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. * * May emit a {RoleGranted} event. */ function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { _grantRole(role, account); } /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. * * May emit a {RoleRevoked} event. */ function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { _revokeRole(role, account); } /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been revoked `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. * * May emit a {RoleRevoked} event. */ function renounceRole(bytes32 role, address account) public virtual override { require(account == _msgSender(), "AccessControl: can only renounce roles for self"); _revokeRole(role, account); } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. Note that unlike {grantRole}, this function doesn't perform any * checks on the calling account. * * May emit a {RoleGranted} event. * * [WARNING] * ==== * This function should only be called from the constructor when setting * up the initial roles for the system. * * Using this function in any other way is effectively circumventing the admin * system imposed by {AccessControl}. * ==== * * NOTE: This function is deprecated in favor of {_grantRole}. */ function _setupRole(bytes32 role, address account) internal virtual { _grantRole(role, account); } /** * @dev Sets `adminRole` as ``role``'s admin role. * * Emits a {RoleAdminChanged} event. */ function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual { bytes32 previousAdminRole = getRoleAdmin(role); _roles[role].adminRole = adminRole; emit RoleAdminChanged(role, previousAdminRole, adminRole); } /** * @dev Grants `role` to `account`. * * Internal function without access restriction. * * May emit a {RoleGranted} event. */ function _grantRole(bytes32 role, address account) internal virtual { if (!hasRole(role, account)) { _roles[role].members[account] = true; emit RoleGranted(role, account, _msgSender()); } } /** * @dev Revokes `role` from `account`. * * Internal function without access restriction. * * May emit a {RoleRevoked} event. */ function _revokeRole(bytes32 role, address account) internal virtual { if (hasRole(role, account)) { _roles[role].members[account] = false; emit RoleRevoked(role, account, _msgSender()); } } }
// Be name Khoda // SPDX-License-Identifier: GPL-3.0 // ================================================================================================================= // _|_|_| _|_|_|_| _| _| _|_|_| _|_|_|_| _| | // _| _| _| _| _| _| _| _|_|_| _|_|_| _|_|_| _|_|_| _|_| | // _| _| _|_|_| _| _| _|_| _|_|_| _| _| _| _| _| _| _| _| _|_|_|_| | // _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| | // _|_|_| _|_|_|_| _|_| _|_|_| _| _| _| _| _|_|_| _| _| _|_|_| _|_|_| | // ================================================================================================================= // ================ Config ================ // =============================================== // DEUS Finance: https://github.com/deusfinance // Primary Author(s) // MRM: https://github.com/smrm-dev pragma solidity 0.8.12; import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol"; import {IConfig} from "./interfaces/IConfig.sol"; import {Checker} from "./libraries/Checker.sol"; /// @title Used for Muon token price feed app configuration /// @author DEUS Finance contract Config is IConfig, AccessControl { using Checker for Route; mapping(uint256 => Route) public routes; uint256 public routesCount; string public description; uint256 public validPriceGap; bytes32 public constant SETTER_ROLE = keccak256("SETTER_ROLE"); modifier hasValidLength(Route storage route) { _; route._checkReversedLength(); route._checkFPTLength(); route._checkMTSLength(); route._checkMTFLength(); } constructor( string memory description_, uint256 validPriceGap_, address setter, address admin ) { description = description_; validPriceGap = validPriceGap_; _setupRole(SETTER_ROLE, setter); _setupRole(DEFAULT_ADMIN_ROLE, admin); } /// @notice sets valid price gap between routes prices /// @param validPriceGap_ valid price gap function setValidPriceGap(uint256 validPriceGap_) external onlyRole(SETTER_ROLE) { emit SetValidPriceGap(validPriceGap, validPriceGap_); validPriceGap = validPriceGap_; } /// @notice Edit route in routes based on index /// @param index Index of route /// @param dex Dex name of route /// @param path Path of route /// @param config Config of route function _setRoute( uint256 index, string memory dex, address[] memory path, Config memory config ) internal hasValidLength(routes[index]) { routes[index] = Route({ index: index, dex: dex, path: path, config: config }); emit SetRoute(index, dex, path, config); } /// @notice Add new route to routes /// @param dex Dex name of route /// @param path Path of route /// @param config Config of route function addRoute( string memory dex, address[] memory path, Config memory config ) external onlyRole(SETTER_ROLE) { _setRoute(routesCount, dex, path, config); routesCount += 1; } /// @notice Update a route /// @param index Index of route /// @param dex Dex name of route /// @param path Path of route /// @param config Config of route function updateRoute( uint256 index, string memory dex, address[] memory path, Config memory config ) external onlyRole(SETTER_ROLE) { require(index < routesCount, "Config: INDEX_OUT_OF_RANGE"); _setRoute(index, dex, path, config); } /// @notice Sets fusePriceTolerance for route with index /// @param index Index of route /// @param fusePriceTolerance FusePriceTolerance of route function setFusePriceTolerance( uint256 index, uint256[] memory fusePriceTolerance ) external onlyRole(SETTER_ROLE) hasValidLength(routes[index]) { require(index < routesCount, "Config: INDEX_OUT_OF_RANGE"); emit SetFusePriceTolerance( index, routes[index].config.fusePriceTolerance, fusePriceTolerance ); routes[index].config.fusePriceTolerance = fusePriceTolerance; } /// @notice Sets fusePriceTolerance for route with index /// @param index Index of route /// @param minutesToSeed Minutes used in Muon to calculate seed block of route function setMinutesToSeed(uint256 index, uint256[] memory minutesToSeed) external onlyRole(SETTER_ROLE) hasValidLength(routes[index]) { require(index < routesCount, "Config: INDEX_OUT_OF_RANGE"); emit SetMinutesToSeed( index, routes[index].config.minutesToSeed, minutesToSeed ); routes[index].config.minutesToSeed = minutesToSeed; } /// @notice Sets fusePriceTolerance for route with index /// @param index Index of route /// @param minutesToFuse Minutes used in Muon to calculate fuse block of route function setMinutesToFuse(uint256 index, uint256[] memory minutesToFuse) external onlyRole(SETTER_ROLE) hasValidLength(routes[index]) { require(index < routesCount, "Config: INDEX_OUT_OF_RANGE"); emit SetMinutesToFuse( index, routes[index].config.minutesToFuse, minutesToFuse ); routes[index].config.minutesToFuse = minutesToFuse; } /// @notice Sets weight for route with index /// @param index Index of route /// @param weight Weight of route function setWeight(uint256 index, uint256 weight) external onlyRole(SETTER_ROLE) { require(index < routesCount, "Config: INDEX_OUT_OF_RANGE"); emit SetWeight(index, routes[index].config.weight, weight); routes[index].config.weight = weight; } /// @notice Sets state for route with index /// @param index Index of route /// @param isActive State of route function setIsActive(uint256 index, bool isActive) external onlyRole(SETTER_ROLE) { require(index < routesCount, "Config: INDEX_OUT_OF_RANGE"); emit SetIsActive(index, routes[index].config.isActive, isActive); routes[index].config.isActive = isActive; } // -------------------------- VIEWS --------------------------- /// @notice Get List Of Active Routes function getRoutes() external view returns (uint256 validPriceGap_, Route[] memory routes_) { uint256 activeRoutes = 0; uint256 i; for (i = 0; i < routesCount; i += 1) { if (routes[i].config.isActive) activeRoutes += 1; } routes_ = new Route[](activeRoutes); uint256 j = 0; for (i = 0; i < routesCount; i += 1) { if (routes[i].config.isActive) { routes_[j] = routes[i]; j += 1; } } return (validPriceGap, routes_); } } // Dar panah khoda
// SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.12; interface IConfigFactory { /* ---- structs ---- */ struct ConfigDescription { address addr; string description; } /* ---- events ---- */ event DeployConfig(uint256 index, address setter, address admin); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol) pragma solidity ^0.8.0; /** * @dev External interface of AccessControl declared to support ERC165 detection. */ interface IAccessControl { /** * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` * * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite * {RoleAdminChanged} not being emitted signaling this. * * _Available since v3.1._ */ event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole); /** * @dev Emitted when `account` is granted `role`. * * `sender` is the account that originated the contract call, an admin role * bearer except when using {AccessControl-_setupRole}. */ event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Emitted when `account` is revoked `role`. * * `sender` is the account that originated the contract call: * - if using `revokeRole`, it is the admin role bearer * - if using `renounceRole`, it is the role bearer (i.e. `account`) */ event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) external view returns (bool); /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {AccessControl-_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) external view returns (bytes32); /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function grantRole(bytes32 role, address account) external; /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function revokeRole(bytes32 role, address account) external; /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been granted `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. */ function renounceRole(bytes32 role, address account) external; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; uint8 private constant _ADDRESS_LENGTH = 20; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } /** * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation. */ function toHexString(address addr) internal pure returns (string memory) { return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; import "./IERC165.sol"; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
// SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.12; pragma experimental ABIEncoderV2; interface IConfig { /* ---- structs ---- */ struct Config { uint256 chainId; string abiStyle; bool[] reversed; uint256[] fusePriceTolerance; uint256[] minutesToSeed; uint256[] minutesToFuse; uint256 weight; bool isActive; } struct Route { uint256 index; string dex; address[] path; Config config; } /* ---- events ---- */ event SetRoute(uint256 index, string dex, address[] path, Config config); event SetDex(uint256 index, string oldValue, string newValue); event SetFusePriceTolerance( uint256 index, uint256[] oldValue, uint256[] newValue ); event SetMinutesToSeed( uint256 index, uint256[] oldValue, uint256[] newValue ); event SetMinutesToFuse( uint256 index, uint256[] oldValue, uint256[] newValue ); event SetWeight(uint256 index, uint256 oldValue, uint256 newValue); event SetIsActive(uint256 index, bool oldValue, bool newValue); event SetValidPriceGap(uint256 oldValue, uint256 newValue); }
// SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.12; import {IConfig} from "../interfaces/IConfig.sol"; library Checker { function _checkReversedLength(IConfig.Route storage route) internal view { require( route.path.length == route.config.reversed.length, "Config: INVALID_LENGTH" ); } function _checkFPTLength(IConfig.Route storage route) internal view { require( route.path.length == route.config.fusePriceTolerance.length, "Config: INVALID_LENGTH" ); } function _checkMTSLength(IConfig.Route storage route) internal view { require( route.path.length == route.config.minutesToSeed.length, "Config: INVALID_LENGTH" ); } function _checkMTFLength(IConfig.Route storage route) internal view { require( route.path.length == route.config.minutesToFuse.length, "Config: INVALID_LENGTH" ); } }
{ "optimizer": { "enabled": true, "runs": 100000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"address","name":"setter","type":"address"},{"indexed":false,"internalType":"address","name":"admin","type":"address"}],"name":"DeployConfig","type":"event"},{"inputs":[{"internalType":"string","name":"description","type":"string"},{"internalType":"uint256","name":"validPriceGap","type":"uint256"},{"internalType":"address","name":"setter","type":"address"},{"internalType":"address","name":"admin","type":"address"}],"name":"deployConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"deployedConfigs","outputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string","name":"description","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deployedConfigsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50613405806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630a0a415614610046578063a33a8b6014610062578063f679b73f14610083575b600080fd5b61004f60015481565b6040519081526020015b60405180910390f35b610075610070366004610335565b610098565b6040516100599291906103b9565b610096610091366004610448565b610154565b005b6000602081905290815260409020805460018201805473ffffffffffffffffffffffffffffffffffffffff90921692916100d190610542565b80601f01602080910402602001604051908101604052809291908181526020018280546100fd90610542565b801561014a5780601f1061011f5761010080835404028352916020019161014a565b820191906000526020600020905b81548152906001019060200180831161012d57829003601f168201915b5050505050905082565b6000848484846040516101669061028e565b6101739493929190610596565b604051809103906000f08015801561018f573d6000803e3d6000fd5b5060408051808201825273ffffffffffffffffffffffffffffffffffffffff838116825260208083018a815260018054600090815280845295909520845181547fffffffffffffffffffffffff000000000000000000000000000000000000000016941693909317835551805195965092949193610213939085019291019061029c565b50506001546040805191825273ffffffffffffffffffffffffffffffffffffffff80871660208401528516908201527f91feea1ce918572424ef9ab6e8fa194d2d9217be892208bd8993ea76a800403a915060600160405180910390a1600180600082825461028291906105dc565b90915550505050505050565b612db4806200061c83390190565b8280546102a890610542565b90600052602060002090601f0160209004810192826102ca5760008555610310565b82601f106102e357805160ff1916838001178555610310565b82800160010185558215610310579182015b828111156103105782518255916020019190600101906102f5565b5061031c929150610320565b5090565b5b8082111561031c5760008155600101610321565b60006020828403121561034757600080fd5b5035919050565b6000815180845260005b8181101561037457602081850181015186830182015201610358565b81811115610386576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006103e8604083018461034e565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461044357600080fd5b919050565b6000806000806080858703121561045e57600080fd5b843567ffffffffffffffff8082111561047657600080fd5b818701915087601f83011261048a57600080fd5b81358181111561049c5761049c6103f0565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156104e2576104e26103f0565b816040528281528a60208487010111156104fb57600080fd5b826020860160208301376000602084830101528098505050505050602085013592506105296040860161041f565b91506105376060860161041f565b905092959194509250565b600181811c9082168061055657607f821691505b60208210811415610590577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6080815260006105a9608083018761034e565b60208301959095525073ffffffffffffffffffffffffffffffffffffffff92831660408201529116606090910152919050565b60008219821115610616577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50019056fe60806040523480156200001157600080fd5b5060405162002db438038062002db483398101604081905262000034916200021b565b83516200004990600390602087019062000142565b5060048390556200007b7f61c92169ef077349011ff0b1383c894d86c5f0b41d986366b58a6cf31e93beda8362000092565b6200008860008262000092565b5050505062000366565b6200009e8282620000a2565b5050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166200009e576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620000fe3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b828054620001509062000329565b90600052602060002090601f016020900481019282620001745760008555620001bf565b82601f106200018f57805160ff1916838001178555620001bf565b82800160010185558215620001bf579182015b82811115620001bf578251825591602001919060010190620001a2565b50620001cd929150620001d1565b5090565b5b80821115620001cd5760008155600101620001d2565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200021657600080fd5b919050565b600080600080608085870312156200023257600080fd5b84516001600160401b03808211156200024a57600080fd5b818701915087601f8301126200025f57600080fd5b815181811115620002745762000274620001e8565b604051601f8201601f19908116603f011681019083821181831017156200029f576200029f620001e8565b81604052828152602093508a84848701011115620002bc57600080fd5b600091505b82821015620002e05784820184015181830185015290830190620002c1565b82821115620002f25760008484830101525b80985050505080870151945050506200030e60408601620001fe565b91506200031e60608601620001fe565b905092959194509250565b600181811c908216806200033e57607f821691505b602082108114156200036057634e487b7160e01b600052602260045260246000fd5b50919050565b612a3e80620003766000396000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c80637e928072116100d8578063b29d1cb31161008c578063e2356f0b11610066578063e2356f0b1461034b578063eb974a941461035e578063fd3269211461037157600080fd5b8063b29d1cb314610312578063c2cc47ba14610325578063d547741f1461033857600080fd5b806391d14854116100bd57806391d148541461029f578063a2011b3f146102e3578063a217fddf1461030a57600080fd5b80637e92807214610276578063864ad6591461028c57600080fd5b806342fb82df1161012f578063726f16d811610114578063726f16d8146102365780637284e4161461025857806374565ce91461026d57600080fd5b806342fb82df1461021057806354bd67701461022357600080fd5b8063248a9ca311610160578063248a9ca3146101b95780632f2ff15d146101ea57806336568abe146101fd57600080fd5b806301ffc9a71461017c5780631ff190b3146101a4575b600080fd5b61018f61018a366004611eb7565b61037a565b60405190151581526020015b60405180910390f35b6101b76101b23660046122bf565b610413565b005b6101dc6101c7366004612351565b60009081526020819052604090206001015490565b60405190815260200161019b565b6101b76101f836600461236a565b6104c0565b6101b761020b36600461236a565b6104ea565b6101b761021e366004612396565b61059d565b6101b7610231366004612351565b6106dd565b610249610244366004612351565b610749565b60405161019b93929190612570565b610260610a34565b60405161019b91906125a5565b6101dc60045481565b61027e610ac2565b60405161019b9291906125fe565b6101b761029a3660046126ce565b610f44565b61018f6102ad36600461236a565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101dc7f61c92169ef077349011ff0b1383c894d86c5f0b41d986366b58a6cf31e93beda81565b6101dc600081565b6101b76103203660046126f0565b611041565b6101b7610333366004612396565b611097565b6101b761034636600461236a565b6111ac565b6101b7610359366004612778565b6111d1565b6101b761036c366004612396565b61130c565b6101dc60025481565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061040d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b7f61c92169ef077349011ff0b1383c894d86c5f0b41d986366b58a6cf31e93beda61043d81611421565b60025485106104ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f436f6e6669673a20494e4445585f4f55545f4f465f52414e474500000000000060448201526064015b60405180910390fd5b6104b98585858561142e565b5050505050565b6000828152602081905260409020600101546104db81611421565b6104e583836115da565b505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461058f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016104a4565b61059982826116ca565b5050565b7f61c92169ef077349011ff0b1383c894d86c5f0b41d986366b58a6cf31e93beda6105c781611421565b60008381526001602052604090206002548410610640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f436f6e6669673a20494e4445585f4f55545f4f465f52414e474500000000000060448201526064016104a4565b6000848152600160205260409081902090517f22c9b7a9b1cfe77e67d4badca0b23e680791244d80bad9a3d88eef6f41efd0ab9161068591879160070190879061279b565b60405180910390a1600084815260016020908152604090912084516106b292600790920191860190611c5f565b506106bc81611781565b6106c5816117f2565b6106ce81611863565b6106d7816118d4565b50505050565b7f61c92169ef077349011ff0b1383c894d86c5f0b41d986366b58a6cf31e93beda61070781611421565b60045460408051918252602082018490527f065b3a15965b74270fb3f21cc505634da84052cc3e2e5a2c7de61f9999eb2635910160405180910390a150600455565b60016020819052600091825260409091208054918101805461076a90612801565b80601f016020809104026020016040519081016040528092919081815260200182805461079690612801565b80156107e35780601f106107b8576101008083540402835291602001916107e3565b820191906000526020600020905b8154815290600101906020018083116107c657829003601f168201915b50505050509080600301604051806101000160405290816000820154815260200160018201805461081390612801565b80601f016020809104026020016040519081016040528092919081815260200182805461083f90612801565b801561088c5780601f106108615761010080835404028352916020019161088c565b820191906000526020600020905b81548152906001019060200180831161086f57829003601f168201915b505050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561090457602002820191906000526020600020906000905b825461010083900a900460ff1615158152602060019283018181049485019490930390920291018084116108d35790505b505050505081526020016003820180548060200260200160405190810160405280929190818152602001828054801561095c57602002820191906000526020600020905b815481526020019060010190808311610948575b50505050508152602001600482018054806020026020016040519081016040528092919081815260200182805480156109b457602002820191906000526020600020905b8154815260200190600101908083116109a0575b5050505050815260200160058201805480602002602001604051908101604052809291908181526020018280548015610a0c57602002820191906000526020600020905b8154815260200190600101908083116109f8575b50505091835250506006820154602082015260079091015460ff161515604090910152905083565b60038054610a4190612801565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6d90612801565b8015610aba5780601f10610a8f57610100808354040283529160200191610aba565b820191906000526020600020905b815481529060010190602001808311610a9d57829003601f168201915b505050505081565b600060606000805b600254811015610b0e576000818152600160205260409020600a015460ff1615610afc57610af9600183612884565b91505b610b07600182612884565b9050610aca565b8167ffffffffffffffff811115610b2757610b27611ef9565b604051908082528060200260200182016040528015610b6057816020015b610b4d611caa565b815260200190600190039081610b455790505b50925060008091505b600254821015610f38576000828152600160205260409020600a015460ff1615610f265760008281526001602081815260409283902083516080810190945280548452918201805491840191610bbe90612801565b80601f0160208091040260200160405190810160405280929190818152602001828054610bea90612801565b8015610c375780601f10610c0c57610100808354040283529160200191610c37565b820191906000526020600020905b815481529060010190602001808311610c1a57829003601f168201915b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015610ca657602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610c7b575b50505050508152602001600382016040518061010001604052908160008201548152602001600182018054610cda90612801565b80601f0160208091040260200160405190810160405280929190818152602001828054610d0690612801565b8015610d535780601f10610d2857610100808354040283529160200191610d53565b820191906000526020600020905b815481529060010190602001808311610d3657829003601f168201915b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015610dcb57602002820191906000526020600020906000905b825461010083900a900460ff161515815260206001928301818104948501949093039092029101808411610d9a5790505b5050505050815260200160038201805480602002602001604051908101604052809291908181526020018280548015610e2357602002820191906000526020600020905b815481526020019060010190808311610e0f575b5050505050815260200160048201805480602002602001604051908101604052809291908181526020018280548015610e7b57602002820191906000526020600020905b815481526020019060010190808311610e67575b5050505050815260200160058201805480602002602001604051908101604052809291908181526020018280548015610ed357602002820191906000526020600020905b815481526020019060010190808311610ebf575b50505091835250506006820154602082015260079091015460ff1615156040909101529052508451859083908110610f0d57610f0d61289c565b6020908102919091010152610f23600182612884565b90505b610f31600183612884565b9150610b69565b60045494505050509091565b7f61c92169ef077349011ff0b1383c894d86c5f0b41d986366b58a6cf31e93beda610f6e81611421565b6002548310610fd9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f436f6e6669673a20494e4445585f4f55545f4f465f52414e474500000000000060448201526064016104a4565b600083815260016020908152604091829020600901548251868152918201529081018390527f903091cd4212709eea2687046bb95a81526c4c6e945dd93cd17d12a144e222179060600160405180910390a15060009182526001602052604090912060090155565b7f61c92169ef077349011ff0b1383c894d86c5f0b41d986366b58a6cf31e93beda61106b81611421565b61107960025485858561142e565b60016002600082825461108c9190612884565b909155505050505050565b7f61c92169ef077349011ff0b1383c894d86c5f0b41d986366b58a6cf31e93beda6110c181611421565b6000838152600160205260409020600254841061113a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f436f6e6669673a20494e4445585f4f55545f4f465f52414e474500000000000060448201526064016104a4565b6000848152600160205260409081902090517f6495994e3d76b941ddc09493235eaec2794ba536287f5d4c5c8fd2043b378c6d9161117f91879160060190879061279b565b60405180910390a1600084815260016020908152604090912084516106b292600690920191860190611c5f565b6000828152602081905260409020600101546111c781611421565b6104e583836116ca565b7f61c92169ef077349011ff0b1383c894d86c5f0b41d986366b58a6cf31e93beda6111fb81611421565b6002548310611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f436f6e6669673a20494e4445585f4f55545f4f465f52414e474500000000000060448201526064016104a4565b60008381526001602052604090819020600a015490517ff8b706bb6340dfc5ee23568da6f404a7ad8ccd5667686292fd3d8afada0f6fec916112c291869160ff1690869092835290151560208301521515604082015260600190565b60405180910390a150600091825260016020526040909120600a0180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b7f61c92169ef077349011ff0b1383c894d86c5f0b41d986366b58a6cf31e93beda61133681611421565b600083815260016020526040902060025484106113af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f436f6e6669673a20494e4445585f4f55545f4f465f52414e474500000000000060448201526064016104a4565b6000848152600160205260409081902090517ff2fd356be3df00ee4b650c479a035fe6c1faa55862bfb944c65d99e83bd9c8fc916113f491879160080190879061279b565b60405180910390a1600084815260016020908152604090912084516106b292600890920191860190611c5f565b61142b8133611945565b50565b6000848152600160208181526040808420815160808101835289815280840189815292810188905260608101879052948990528383528451815590518051919493859361148093918501920190611d19565b506040820151805161149c916002840191602090910190611d8c565b50606082015180516003830190815560208083015180516114c39260048701920190611d19565b50604082015180516114df916002840191602090910190611e06565b50606082015180516114fb916003840191602090910190611c5f565b5060808201518051611517916004840191602090910190611c5f565b5060a08201518051611533916005840191602090910190611c5f565b5060c0820151600682015560e090910151600790910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905550506040517fb6bd417ebab43e4d9f35a475e2e41e47d59e924feb3ed64ce0eb94894dc47ba6906115ae9087908790879087906128cb565b60405180910390a16115bf81611781565b6115c8816117f2565b6115d181611863565b6104b9816118d4565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166105995760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561166c3390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156105995760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600581015460028201541461142b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f436f6e6669673a20494e56414c49445f4c454e4754480000000000000000000060448201526064016104a4565b600681015460028201541461142b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f436f6e6669673a20494e56414c49445f4c454e4754480000000000000000000060448201526064016104a4565b600781015460028201541461142b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f436f6e6669673a20494e56414c49445f4c454e4754480000000000000000000060448201526064016104a4565b600881015460028201541461142b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f436f6e6669673a20494e56414c49445f4c454e4754480000000000000000000060448201526064016104a4565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166105995761199b8173ffffffffffffffffffffffffffffffffffffffff166014611a15565b6119a6836020611a15565b6040516020016119b7929190612915565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526104a4916004016125a5565b60606000611a24836002612996565b611a2f906002612884565b67ffffffffffffffff811115611a4757611a47611ef9565b6040519080825280601f01601f191660200182016040528015611a71576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611aa857611aa861289c565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611b0b57611b0b61289c565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000611b47846002612996565b611b52906001612884565b90505b6001811115611bef577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110611b9357611b9361289c565b1a60f81b828281518110611ba957611ba961289c565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c93611be8816129d3565b9050611b55565b508315611c58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016104a4565b9392505050565b828054828255906000526020600020908101928215611c9a579160200282015b82811115611c9a578251825591602001919060010190611c7f565b50611ca6929150611ea2565b5090565b6040518060800160405280600081526020016060815260200160608152602001611d14604051806101000160405280600081526020016060815260200160608152602001606081526020016060815260200160608152602001600081526020016000151581525090565b905290565b828054611d2590612801565b90600052602060002090601f016020900481019282611d475760008555611c9a565b82601f10611d6057805160ff1916838001178555611c9a565b82800160010185558215611c9a5791820182811115611c9a578251825591602001919060010190611c7f565b828054828255906000526020600020908101928215611c9a579160200282015b82811115611c9a57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190611dac565b82805482825590600052602060002090601f01602090048101928215611c9a5791602002820160005b83821115611e6c57835183826101000a81548160ff0219169083151502179055509260200192600101602081600001049283019260010302611e2f565b8015611e995782816101000a81549060ff0219169055600101602081600001049283019260010302611e6c565b5050611ca69291505b5b80821115611ca65760008155600101611ea3565b600060208284031215611ec957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611c5857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715611f4c57611f4c611ef9565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611f9957611f99611ef9565b604052919050565b600082601f830112611fb257600080fd5b813567ffffffffffffffff811115611fcc57611fcc611ef9565b611ffd60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611f52565b81815284602083860101111561201257600080fd5b816020850160208301376000918101602001919091529392505050565b600067ffffffffffffffff82111561204957612049611ef9565b5060051b60200190565b803573ffffffffffffffffffffffffffffffffffffffff8116811461207757600080fd5b919050565b600082601f83011261208d57600080fd5b813560206120a261209d8361202f565b611f52565b82815260059290921b840181019181810190868411156120c157600080fd5b8286015b848110156120e3576120d681612053565b83529183019183016120c5565b509695505050505050565b8035801515811461207757600080fd5b600082601f83011261210f57600080fd5b8135602061211f61209d8361202f565b82815260059290921b8401810191818101908684111561213e57600080fd5b8286015b848110156120e357612153816120ee565b8352918301918301612142565b600082601f83011261217157600080fd5b8135602061218161209d8361202f565b82815260059290921b840181019181810190868411156121a057600080fd5b8286015b848110156120e357803583529183019183016121a4565b600061010082840312156121ce57600080fd5b6121d6611f28565b905081358152602082013567ffffffffffffffff808211156121f757600080fd5b61220385838601611fa1565b6020840152604084013591508082111561221c57600080fd5b612228858386016120fe565b6040840152606084013591508082111561224157600080fd5b61224d85838601612160565b6060840152608084013591508082111561226657600080fd5b61227285838601612160565b608084015260a084013591508082111561228b57600080fd5b5061229884828501612160565b60a08301525060c082013560c08201526122b460e083016120ee565b60e082015292915050565b600080600080608085870312156122d557600080fd5b84359350602085013567ffffffffffffffff808211156122f457600080fd5b61230088838901611fa1565b9450604087013591508082111561231657600080fd5b6123228883890161207c565b9350606087013591508082111561233857600080fd5b50612345878288016121bb565b91505092959194509250565b60006020828403121561236357600080fd5b5035919050565b6000806040838503121561237d57600080fd5b8235915061238d60208401612053565b90509250929050565b600080604083850312156123a957600080fd5b82359150602083013567ffffffffffffffff8111156123c757600080fd5b6123d385828601612160565b9150509250929050565b60005b838110156123f85781810151838201526020016123e0565b838111156106d75750506000910152565b600081518084526124218160208601602086016123dd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600081518084526020808501945080840160005b83811015612485578151151587529582019590820190600101612467565b509495945050505050565b600081518084526020808501945080840160005b83811015612485578151875295820195908201906001016124a4565b60006101008251845260208301518160208601526124e082860182612409565b915050604083015184820360408601526124fa8282612453565b915050606083015184820360608601526125148282612490565b9150506080830151848203608086015261252e8282612490565b91505060a083015184820360a08601526125488282612490565b91505060c083015160c085015260e083015161256860e086018215159052565b509392505050565b8381526060602082015260006125896060830185612409565b828103604084015261259b81856124c0565b9695505050505050565b602081526000611c586020830184612409565b600081518084526020808501945080840160005b8381101561248557815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016125cc565b6000604080830185845260208281860152818651808452606093508387019150838160051b88010183890160005b838110156126be577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8403018552815160808151855287820151818987015261267882870182612409565b915050898201518582038b87015261269082826125b8565b915050888201519150848103898601526126aa81836124c0565b96880196945050509085019060010161262c565b50909a9950505050505050505050565b600080604083850312156126e157600080fd5b50508035926020909101359150565b60008060006060848603121561270557600080fd5b833567ffffffffffffffff8082111561271d57600080fd5b61272987838801611fa1565b9450602086013591508082111561273f57600080fd5b61274b8783880161207c565b9350604086013591508082111561276157600080fd5b5061276e868287016121bb565b9150509250925092565b6000806040838503121561278b57600080fd5b8235915061238d602084016120ee565b60006060820185835260206060818501528186548084526080860191508760005282600020935060005b818110156127e1578454835260019485019492840192016127c5565b505084810360408601526127f58187612490565b98975050505050505050565b600181811c9082168061281557607f821691505b6020821081141561284f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561289757612897612855565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8481526080602082015260006128e46080830186612409565b82810360408401526128f681866125b8565b9050828103606084015261290a81856124c0565b979650505050505050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161294d8160178501602088016123dd565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000601791840191820152835161298a8160288401602088016123dd565b01602801949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156129ce576129ce612855565b500290565b6000816129e2576129e2612855565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea2646970667358221220fdefc67c3925427a740b13e5bab186db8f342f83fa95668a39a1714e6040965e64736f6c634300080c0033a2646970667358221220d13d9bcc16c59b2e3327c71d6d578eefe77cbbd3fd6730456d8461eb36683c7164736f6c634300080c0033
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Validator ID :
0 FTM
Amount Staked
0
Amount Delegated
0
Staking Total
0
Staking Start Epoch
0
Staking Start Time
0
Proof of Importance
0
Origination Score
0
Validation Score
0
Active
0
Online
0
Downtime
0 s
Address | Amount | claimed Rewards | Created On Epoch | Created On |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.