More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 579 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Unstake | 15385633 | 859 days ago | IN | 0 ETH | 0.00066022 | ||||
Unstake | 15312046 | 870 days ago | IN | 0 ETH | 0.00115675 | ||||
Unstake | 15304919 | 872 days ago | IN | 0 ETH | 0.00154216 | ||||
Unstake | 15304913 | 872 days ago | IN | 0 ETH | 0.00132828 | ||||
Unstake | 15304889 | 872 days ago | IN | 0 ETH | 0.00191917 | ||||
Unstake | 15304864 | 872 days ago | IN | 0 ETH | 0.00251731 | ||||
Unstake | 15284999 | 875 days ago | IN | 0 ETH | 0.00097174 | ||||
Unstake | 15262564 | 878 days ago | IN | 0 ETH | 0.00075115 | ||||
Unstake | 15262544 | 878 days ago | IN | 0 ETH | 0.00078252 | ||||
Unstake | 15185874 | 890 days ago | IN | 0 ETH | 0.00059173 | ||||
Unstake | 15185863 | 890 days ago | IN | 0 ETH | 0.00059185 | ||||
Unstake | 15185831 | 890 days ago | IN | 0 ETH | 0.00045737 | ||||
Unstake | 15185707 | 890 days ago | IN | 0 ETH | 0.00130003 | ||||
Unstake | 15166379 | 893 days ago | IN | 0 ETH | 0.00204806 | ||||
Unstake | 15166361 | 893 days ago | IN | 0 ETH | 0.00122978 | ||||
Unstake | 15144649 | 896 days ago | IN | 0 ETH | 0.00413307 | ||||
Unstake | 15141359 | 897 days ago | IN | 0 ETH | 0.00356567 | ||||
Unstake | 15141335 | 897 days ago | IN | 0 ETH | 0.00390969 | ||||
Unstake | 15136573 | 898 days ago | IN | 0 ETH | 0.00242618 | ||||
Unstake | 15136441 | 898 days ago | IN | 0 ETH | 0.00249895 | ||||
Unstake | 15006505 | 919 days ago | IN | 0 ETH | 0.00208516 | ||||
Unstake | 14831520 | 949 days ago | IN | 0 ETH | 0.00882513 | ||||
Unstake | 14831439 | 949 days ago | IN | 0 ETH | 0.00424647 | ||||
Unstake | 14782047 | 957 days ago | IN | 0 ETH | 0.00280944 | ||||
Unstake | 14780178 | 957 days ago | IN | 0 ETH | 0.00233196 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
ManifestStaking
Compiler Version
v0.7.5+commit.eb77ed08
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-11-10 */ // SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity 0.7.5; library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot 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-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } } interface IERC20 { function decimals() external view returns (uint8); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies in extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.3._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.3._ */ function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } function addressToString(address _address) internal pure returns(string memory) { bytes32 _bytes = bytes32(uint256(_address)); bytes memory HEX = "0123456789abcdef"; bytes memory _addr = new bytes(42); _addr[0] = '0'; _addr[1] = 'x'; for(uint256 i = 0; i < 20; i++) { _addr[2+i*2] = HEX[uint8(_bytes[i + 12] >> 4)]; _addr[3+i*2] = HEX[uint8(_bytes[i + 12] & 0x0f)]; } return string(_addr); } } library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove(IERC20 token, address spender, uint256 value) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero"); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } interface IOwnable { function manager() external view returns (address); function renounceManagement() external; function pushManagement( address newOwner_ ) external; function pullManagement() external; } contract Ownable is IOwnable { address internal _owner; address internal _newOwner; event OwnershipPushed(address indexed previousOwner, address indexed newOwner); event OwnershipPulled(address indexed previousOwner, address indexed newOwner); constructor () { _owner = msg.sender; emit OwnershipPushed( address(0), _owner ); } function manager() public view override returns (address) { return _owner; } modifier onlyManager() { require( _owner == msg.sender, "Ownable: caller is not the owner" ); _; } function renounceManagement() public virtual override onlyManager() { emit OwnershipPushed( _owner, address(0) ); _owner = address(0); } function pushManagement( address newOwner_ ) public virtual override onlyManager() { require( newOwner_ != address(0), "Ownable: new owner is the zero address"); emit OwnershipPushed( _owner, newOwner_ ); _newOwner = newOwner_; } function pullManagement() public virtual override { require( msg.sender == _newOwner, "Ownable: must be new owner to pull"); emit OwnershipPulled( _owner, _newOwner ); _owner = _newOwner; } } interface IsMNFST { function rebase( uint256 mnfstProfit_, uint epoch_) external returns (uint256); function circulatingSupply() external view returns (uint256); function balanceOf(address who) external view returns (uint256); function gonsForBalance( uint amount ) external view returns ( uint ); function balanceForGons( uint gons ) external view returns ( uint ); function index() external view returns ( uint ); } interface IWarmup { function retrieve( address staker_, uint amount_ ) external; } interface IDistributor { function distribute() external returns ( bool ); } contract ManifestStaking is Ownable { using SafeMath for uint256; using SafeERC20 for IERC20; event Unstaked(address sender, uint256 amount); address public immutable MNFST; address public immutable sMNFST; struct Epoch { uint length; uint number; uint endBlock; uint distribute; } Epoch public epoch; address public distributor; address public locker; uint public totalBonus; address public warmupContract; uint public warmupPeriod; constructor ( address _MNFST, address _sMNFST, uint _epochLength, uint _firstEpochNumber, uint _firstEpochBlock ) { require( _MNFST != address(0) ); MNFST = _MNFST; require( _sMNFST != address(0) ); sMNFST = _sMNFST; epoch = Epoch({ length: _epochLength, number: _firstEpochNumber, endBlock: _firstEpochBlock, distribute: 0 }); } struct Claim { uint deposit; uint gons; uint expiry; bool lock; // prevents malicious delays } mapping( address => Claim ) public warmupInfo; /** @notice stake MNFST to enter warmup @param _amount uint @return bool */ function stake( uint _amount, address _recipient ) external returns ( bool ) { rebase(); IERC20( MNFST ).safeTransferFrom( msg.sender, address(this), _amount ); Claim memory info = warmupInfo[ _recipient ]; require( !info.lock, "Deposits for account are locked" ); warmupInfo[ _recipient ] = Claim ({ deposit: info.deposit.add( _amount ), gons: info.gons.add( IsMNFST( sMNFST ).gonsForBalance( _amount ) ), expiry: epoch.number.add( warmupPeriod ), lock: false }); IERC20( sMNFST ).safeTransfer( warmupContract, _amount ); return true; } /** @notice retrieve sMNFST from warmup @param _recipient address */ function claim ( address _recipient ) public { Claim memory info = warmupInfo[ _recipient ]; if ( epoch.number >= info.expiry && info.expiry != 0 ) { delete warmupInfo[ _recipient ]; IWarmup( warmupContract ).retrieve( _recipient, IsMNFST( sMNFST ).balanceForGons( info.gons ) ); } } /** @notice forfeit sMNFST in warmup and retrieve MNFST */ function forfeit() external { Claim memory info = warmupInfo[ msg.sender ]; delete warmupInfo[ msg.sender ]; IWarmup( warmupContract ).retrieve( address(this), IsMNFST( sMNFST ).balanceForGons( info.gons ) ); IERC20( MNFST ).safeTransfer( msg.sender, info.deposit ); } /** @notice prevent new deposits to address (protection from malicious activity) */ function toggleDepositLock() external { warmupInfo[ msg.sender ].lock = !warmupInfo[ msg.sender ].lock; } /** @notice redeem sMNFST for MNFST @param _amount uint @param _trigger bool */ function unstake( uint _amount, bool _trigger ) external { if ( _trigger ) { rebase(); } IERC20( sMNFST ).safeTransferFrom( msg.sender, address(this), _amount ); IERC20( MNFST ).safeTransfer( msg.sender, _amount ); emit Unstaked(msg.sender, _amount); } /** @notice returns the sMNFST index, which tracks rebase growth @return uint */ function index() public view returns ( uint ) { return IsMNFST( sMNFST ).index(); } /** @notice trigger rebase if epoch over */ function rebase() public { if( epoch.endBlock <= block.number ) { IsMNFST( sMNFST ).rebase( epoch.distribute, epoch.number ); epoch.endBlock = epoch.endBlock.add( epoch.length ); epoch.number++; if ( distributor != address(0) ) { IDistributor( distributor ).distribute(); } uint balance = contractBalance(); uint staked = IsMNFST( sMNFST ).circulatingSupply(); if( balance <= staked ) { epoch.distribute = 0; } else { epoch.distribute = balance.sub( staked ); } } } /** @notice returns contract MNFST holdings, including bonuses provided @return uint */ function contractBalance() public view returns ( uint ) { return IERC20( MNFST ).balanceOf( address(this) ).add( totalBonus ); } /** @notice provide bonus to locked staking contract @param _amount uint */ function giveLockBonus( uint _amount ) external { require( msg.sender == locker ); totalBonus = totalBonus.add( _amount ); IERC20( sMNFST ).safeTransfer( locker, _amount ); } /** @notice reclaim bonus from locked staking contract @param _amount uint */ function returnLockBonus( uint _amount ) external { require( msg.sender == locker ); totalBonus = totalBonus.sub( _amount ); IERC20( sMNFST ).safeTransferFrom( locker, address(this), _amount ); } enum CONTRACTS { DISTRIBUTOR, WARMUP, LOCKER } /** @notice sets the contract address for LP staking @param _contract address */ function setContract( CONTRACTS _contract, address _address ) external onlyManager() { if( _contract == CONTRACTS.DISTRIBUTOR ) { // 0 distributor = _address; } else if ( _contract == CONTRACTS.WARMUP ) { // 1 require( warmupContract == address( 0 ), "Warmup cannot be set more than once" ); warmupContract = _address; } else if ( _contract == CONTRACTS.LOCKER ) { // 2 require( locker == address(0), "Locker cannot be set more than once" ); locker = _address; } } /** * @notice set warmup period for new stakers * @param _warmupPeriod uint */ function setWarmup( uint _warmupPeriod ) external onlyManager() { warmupPeriod = _warmupPeriod; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_MNFST","type":"address"},{"internalType":"address","name":"_sMNFST","type":"address"},{"internalType":"uint256","name":"_epochLength","type":"uint256"},{"internalType":"uint256","name":"_firstEpochNumber","type":"uint256"},{"internalType":"uint256","name":"_firstEpochBlock","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipPulled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipPushed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Unstaked","type":"event"},{"inputs":[],"name":"MNFST","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"epoch","outputs":[{"internalType":"uint256","name":"length","type":"uint256"},{"internalType":"uint256","name":"number","type":"uint256"},{"internalType":"uint256","name":"endBlock","type":"uint256"},{"internalType":"uint256","name":"distribute","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"forfeit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"giveLockBonus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"index","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"locker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pullManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner_","type":"address"}],"name":"pushManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rebase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"returnLockBonus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sMNFST","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum ManifestStaking.CONTRACTS","name":"_contract","type":"uint8"},{"internalType":"address","name":"_address","type":"address"}],"name":"setContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_warmupPeriod","type":"uint256"}],"name":"setWarmup","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_recipient","type":"address"}],"name":"stake","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleDepositLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalBonus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_trigger","type":"bool"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"warmupContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"warmupInfo","outputs":[{"internalType":"uint256","name":"deposit","type":"uint256"},{"internalType":"uint256","name":"gons","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"bool","name":"lock","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"warmupPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60c060405234801561001057600080fd5b50604051611a10380380611a10833981810160405260a081101561003357600080fd5b50805160208201516040808401516060850151608090950151600080546001600160a01b031916331780825593519596949592949391926001600160a01b0392909216917fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba908290a36001600160a01b0385166100af57600080fd5b6001600160601b0319606086901b166080526001600160a01b0384166100d457600080fd5b6001600160601b0319606094851b1660a0526040805160808101825284815260208101849052908101829052600094018490526002929092556003556004556005555060805160601c60a05160601c61188a6101866000398061040b52806105a5528061068652806109eb5280610af75280610d9e5280610e4a5280610fa5528061119052806112d852806113045250806108f55280610cae5280610dd3528061104f5280611277525061188a6000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c8063900cf0cf116100de578063c9f464ff11610097578063ed4acaa811610071578063ed4acaa81461039e578063f3d86e4a146103a6578063f62ae76a146103ae578063fddadad4146103cb57610173565b8063c9f464ff14610371578063d7b96d4e1461038e578063deac361a1461039657610173565b8063900cf0cf146102fe5780639ebea88c1461032c578063a8dd07dc14610351578063af14052c14610359578063b5764e4714610361578063bfe109281461036957610173565b80635a96ac0a116101305780635a96ac0a146102295780636746f4c2146102315780637acb77571461027f578063865e6fd3146102bf5780638b7afe2e146102ee5780638f077b83146102f657610173565b806303c2367014610178578063089208d8146101975780631e83409a1461019f5780632986c0e5146101c557806346f68ee9146101df578063481c6a7514610205575b600080fd5b6101956004803603602081101561018e57600080fd5b50356103d3565b005b610195610437565b610195600480360360208110156101b557600080fd5b50356001600160a01b03166104ce565b6101cd610682565b60408051918252519081900360200190f35b610195600480360360208110156101f557600080fd5b50356001600160a01b031661070e565b61020d6107fb565b604080516001600160a01b039092168252519081900360200190f35b61019561080a565b6102576004803603602081101561024757600080fd5b50356001600160a01b03166108b4565b6040805194855260208501939093528383019190915215156060830152519081900360800190f35b6102ab6004803603604081101561029557600080fd5b50803590602001356001600160a01b03166108de565b604080519115158252519081900360200190f35b610195600480360360408110156102d557600080fd5b50803560ff1690602001356001600160a01b0316610b2a565b6101cd610ca4565b610195610d50565b610306610d74565b604080519485526020850193909352838301919091526060830152519081900360800190f35b6101956004803603604081101561034257600080fd5b50803590602001351515610d83565b6101cd610e39565b610195610e3f565b61020d61104d565b61020d611071565b6101956004803603602081101561038757600080fd5b5035611080565b61020d6110d2565b6101cd6110e1565b61020d6110e7565b6101956110f6565b610195600480360360208110156103c457600080fd5b50356112a0565b61020d611302565b6007546001600160a01b031633146103ea57600080fd5b6008546103f79082611326565b600855600754610434906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911683611387565b50565b6000546001600160a01b03163314610484576040805162461bcd60e51b8152602060048201819052602482015260008051602061180b833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba908390a3600080546001600160a01b0319169055565b6104d6611752565b506001600160a01b0381166000908152600b6020908152604091829020825160808101845281548152600182015492810192909252600281015492820183905260039081015460ff16151560608301525490911180159061053a5750604081015115155b1561067e576001600160a01b038083166000908152600b602090815260408083208381556001810184905560028101939093556003909201805460ff19169055600954848201518351637965d56d60e01b8152600481019190915292519084169363c3a2a6659387937f000000000000000000000000000000000000000000000000000000000000000090921692637965d56d92602480840193919291829003018186803b1580156105eb57600080fd5b505afa1580156105ff573d6000803e3d6000fd5b505050506040513d602081101561061557600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b15801561066557600080fd5b505af1158015610679573d6000803e3d6000fd5b505050505b5050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632986c0e56040518163ffffffff1660e01b815260040160206040518083038186803b1580156106dd57600080fd5b505afa1580156106f1573d6000803e3d6000fd5b505050506040513d602081101561070757600080fd5b5051905090565b6000546001600160a01b0316331461075b576040805162461bcd60e51b8152602060048201819052602482015260008051602061180b833981519152604482015290519081900360640190fd5b6001600160a01b0381166107a05760405162461bcd60e51b81526004018080602001828103825260268152602001806117a06026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba91a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b6001546001600160a01b031633146108535760405162461bcd60e51b81526004018080602001828103825260228152602001806117e96022913960400191505060405180910390fd5b600154600080546040516001600160a01b0393841693909116917faa151555690c956fc3ea32f106bb9f119b5237a061eaa8557cff3e51e3792c8d91a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b600b6020526000908152604090208054600182015460028301546003909301549192909160ff1684565b60006108e8610e3f565b61091d6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330866113de565b610925611752565b506001600160a01b0382166000908152600b602090815260409182902082516080810184528154815260018201549281019290925260028101549282019290925260039091015460ff1615801560608301526109c8576040805162461bcd60e51b815260206004820152601f60248201527f4465706f7369747320666f72206163636f756e7420617265206c6f636b656400604482015290519081900360640190fd5b6040805160808101909152815181906109e19087611326565b8152602001610a847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631bd39674886040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610a4d57600080fd5b505afa158015610a61573d6000803e3d6000fd5b505050506040513d6020811015610a7757600080fd5b5051602085015190611326565b8152600a54600354602090920191610a9b91611326565b8152600060209182018190526001600160a01b038681168252600b8352604091829020845181559284015160018401559083015160028301556060909201516003909101805460ff1916911515919091179055600954610b20917f00000000000000000000000000000000000000000000000000000000000000008116911686611387565b5060019392505050565b6000546001600160a01b03163314610b77576040805162461bcd60e51b8152602060048201819052602482015260008051602061180b833981519152604482015290519081900360640190fd5b6000826002811115610b8557fe5b1415610bab57600680546001600160a01b0319166001600160a01b03831617905561067e565b6001826002811115610bb957fe5b1415610c27576009546001600160a01b031615610c075760405162461bcd60e51b81526004018080602001828103825260238152602001806117c66023913960400191505060405180910390fd5b600980546001600160a01b0319166001600160a01b03831617905561067e565b6002826002811115610c3557fe5b141561067e576007546001600160a01b031615610c835760405162461bcd60e51b815260040180806020018281038252602381526020018061177d6023913960400191505060405180910390fd5b600780546001600160a01b0383166001600160a01b03199091161790555050565b6000610d4b6008547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610d1957600080fd5b505afa158015610d2d573d6000803e3d6000fd5b505050506040513d6020811015610d4357600080fd5b505190611326565b905090565b336000908152600b60205260409020600301805460ff19811660ff90911615179055565b60025460035460045460055484565b8015610d9157610d91610e3f565b610dc66001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330856113de565b610dfa6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163384611387565b604080513381526020810184905281517f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f75929181900390910190a15050565b60085481565b600454431061104b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663058ecdb46002600301546002600101546040518363ffffffff1660e01b81526004018083815260200182815260200192505050602060405180830381600087803b158015610ec057600080fd5b505af1158015610ed4573d6000803e3d6000fd5b505050506040513d6020811015610eea57600080fd5b5050600254600454610efb91611326565b6004556003805460010190556006546001600160a01b031615610f9557600660009054906101000a90046001600160a01b03166001600160a01b031663e4fc6b6d6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610f6857600080fd5b505af1158015610f7c573d6000803e3d6000fd5b505050506040513d6020811015610f9257600080fd5b50505b6000610f9f610ca4565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639358928b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ffc57600080fd5b505afa158015611010573d6000803e3d6000fd5b505050506040513d602081101561102657600080fd5b5051905080821161103b57600060055561067e565b611045828261143e565b60055550505b565b7f000000000000000000000000000000000000000000000000000000000000000081565b6006546001600160a01b031681565b6000546001600160a01b031633146110cd576040805162461bcd60e51b8152602060048201819052602482015260008051602061180b833981519152604482015290519081900360640190fd5b600a55565b6007546001600160a01b031681565b600a5481565b6009546001600160a01b031681565b6110fe611752565b50336000818152600b602081815260408084208151608081018352815481526001820180548286019081526002840180548487015260038501805460ff8116151560608701529a8a5297875293889055908790559590915560ff1990951690925560095492518251637965d56d60e01b8152600481019190915291516001600160a01b039384169363c3a2a6659330937f000000000000000000000000000000000000000000000000000000000000000090921692637965d56d92602480840193919291829003018186803b1580156111d657600080fd5b505afa1580156111ea573d6000803e3d6000fd5b505050506040513d602081101561120057600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b15801561125057600080fd5b505af1158015611264573d6000803e3d6000fd5b5050825161043492506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691503390611387565b6007546001600160a01b031633146112b757600080fd5b6008546112c4908261143e565b600855600754610434906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911630846113de565b7f000000000000000000000000000000000000000000000000000000000000000081565b600082820183811015611380576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526113d9908490611480565b505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611438908590611480565b50505050565b600061138083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611531565b60606114d5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166115c89092919063ffffffff16565b8051909150156113d9578080602001905160208110156114f457600080fd5b50516113d95760405162461bcd60e51b815260040180806020018281038252602a81526020018061182b602a913960400191505060405180910390fd5b600081848411156115c05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561158557818101518382015260200161156d565b50505050905090810190601f1680156115b25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60606115d784846000856115df565b949350505050565b60606115ea8561174c565b61163b576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b6020831061167a5780518252601f19909201916020918201910161165b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146116dc576040519150601f19603f3d011682016040523d82523d6000602084013e6116e1565b606091505b509150915081156116f55791506115d79050565b8051156117055780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561158557818101518382015260200161156d565b3b151590565b6040518060800160405280600081526020016000815260200160008152602001600015158152509056fe4c6f636b65722063616e6e6f7420626520736574206d6f7265207468616e206f6e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735761726d75702063616e6e6f7420626520736574206d6f7265207468616e206f6e63654f776e61626c653a206d757374206265206e6577206f776e657220746f2070756c6c4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212206f2a51678cc53e914d5cb9cf9b6e3a465afcb78b6977107b3094ab62a26286ec64736f6c6343000705003300000000000000000000000021585bbcd5bdc3f5737620cf0db2e51978cf60ac000000000000000000000000d9ccb7bd2b66edb2998e9de53bd7883891ca665b000000000000000000000000000000000000000000000000000000000000089800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000cf6c60
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101735760003560e01c8063900cf0cf116100de578063c9f464ff11610097578063ed4acaa811610071578063ed4acaa81461039e578063f3d86e4a146103a6578063f62ae76a146103ae578063fddadad4146103cb57610173565b8063c9f464ff14610371578063d7b96d4e1461038e578063deac361a1461039657610173565b8063900cf0cf146102fe5780639ebea88c1461032c578063a8dd07dc14610351578063af14052c14610359578063b5764e4714610361578063bfe109281461036957610173565b80635a96ac0a116101305780635a96ac0a146102295780636746f4c2146102315780637acb77571461027f578063865e6fd3146102bf5780638b7afe2e146102ee5780638f077b83146102f657610173565b806303c2367014610178578063089208d8146101975780631e83409a1461019f5780632986c0e5146101c557806346f68ee9146101df578063481c6a7514610205575b600080fd5b6101956004803603602081101561018e57600080fd5b50356103d3565b005b610195610437565b610195600480360360208110156101b557600080fd5b50356001600160a01b03166104ce565b6101cd610682565b60408051918252519081900360200190f35b610195600480360360208110156101f557600080fd5b50356001600160a01b031661070e565b61020d6107fb565b604080516001600160a01b039092168252519081900360200190f35b61019561080a565b6102576004803603602081101561024757600080fd5b50356001600160a01b03166108b4565b6040805194855260208501939093528383019190915215156060830152519081900360800190f35b6102ab6004803603604081101561029557600080fd5b50803590602001356001600160a01b03166108de565b604080519115158252519081900360200190f35b610195600480360360408110156102d557600080fd5b50803560ff1690602001356001600160a01b0316610b2a565b6101cd610ca4565b610195610d50565b610306610d74565b604080519485526020850193909352838301919091526060830152519081900360800190f35b6101956004803603604081101561034257600080fd5b50803590602001351515610d83565b6101cd610e39565b610195610e3f565b61020d61104d565b61020d611071565b6101956004803603602081101561038757600080fd5b5035611080565b61020d6110d2565b6101cd6110e1565b61020d6110e7565b6101956110f6565b610195600480360360208110156103c457600080fd5b50356112a0565b61020d611302565b6007546001600160a01b031633146103ea57600080fd5b6008546103f79082611326565b600855600754610434906001600160a01b037f000000000000000000000000d9ccb7bd2b66edb2998e9de53bd7883891ca665b8116911683611387565b50565b6000546001600160a01b03163314610484576040805162461bcd60e51b8152602060048201819052602482015260008051602061180b833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba908390a3600080546001600160a01b0319169055565b6104d6611752565b506001600160a01b0381166000908152600b6020908152604091829020825160808101845281548152600182015492810192909252600281015492820183905260039081015460ff16151560608301525490911180159061053a5750604081015115155b1561067e576001600160a01b038083166000908152600b602090815260408083208381556001810184905560028101939093556003909201805460ff19169055600954848201518351637965d56d60e01b8152600481019190915292519084169363c3a2a6659387937f000000000000000000000000d9ccb7bd2b66edb2998e9de53bd7883891ca665b90921692637965d56d92602480840193919291829003018186803b1580156105eb57600080fd5b505afa1580156105ff573d6000803e3d6000fd5b505050506040513d602081101561061557600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b15801561066557600080fd5b505af1158015610679573d6000803e3d6000fd5b505050505b5050565b60007f000000000000000000000000d9ccb7bd2b66edb2998e9de53bd7883891ca665b6001600160a01b0316632986c0e56040518163ffffffff1660e01b815260040160206040518083038186803b1580156106dd57600080fd5b505afa1580156106f1573d6000803e3d6000fd5b505050506040513d602081101561070757600080fd5b5051905090565b6000546001600160a01b0316331461075b576040805162461bcd60e51b8152602060048201819052602482015260008051602061180b833981519152604482015290519081900360640190fd5b6001600160a01b0381166107a05760405162461bcd60e51b81526004018080602001828103825260268152602001806117a06026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba91a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b6001546001600160a01b031633146108535760405162461bcd60e51b81526004018080602001828103825260228152602001806117e96022913960400191505060405180910390fd5b600154600080546040516001600160a01b0393841693909116917faa151555690c956fc3ea32f106bb9f119b5237a061eaa8557cff3e51e3792c8d91a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b600b6020526000908152604090208054600182015460028301546003909301549192909160ff1684565b60006108e8610e3f565b61091d6001600160a01b037f00000000000000000000000021585bbcd5bdc3f5737620cf0db2e51978cf60ac163330866113de565b610925611752565b506001600160a01b0382166000908152600b602090815260409182902082516080810184528154815260018201549281019290925260028101549282019290925260039091015460ff1615801560608301526109c8576040805162461bcd60e51b815260206004820152601f60248201527f4465706f7369747320666f72206163636f756e7420617265206c6f636b656400604482015290519081900360640190fd5b6040805160808101909152815181906109e19087611326565b8152602001610a847f000000000000000000000000d9ccb7bd2b66edb2998e9de53bd7883891ca665b6001600160a01b0316631bd39674886040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610a4d57600080fd5b505afa158015610a61573d6000803e3d6000fd5b505050506040513d6020811015610a7757600080fd5b5051602085015190611326565b8152600a54600354602090920191610a9b91611326565b8152600060209182018190526001600160a01b038681168252600b8352604091829020845181559284015160018401559083015160028301556060909201516003909101805460ff1916911515919091179055600954610b20917f000000000000000000000000d9ccb7bd2b66edb2998e9de53bd7883891ca665b8116911686611387565b5060019392505050565b6000546001600160a01b03163314610b77576040805162461bcd60e51b8152602060048201819052602482015260008051602061180b833981519152604482015290519081900360640190fd5b6000826002811115610b8557fe5b1415610bab57600680546001600160a01b0319166001600160a01b03831617905561067e565b6001826002811115610bb957fe5b1415610c27576009546001600160a01b031615610c075760405162461bcd60e51b81526004018080602001828103825260238152602001806117c66023913960400191505060405180910390fd5b600980546001600160a01b0319166001600160a01b03831617905561067e565b6002826002811115610c3557fe5b141561067e576007546001600160a01b031615610c835760405162461bcd60e51b815260040180806020018281038252602381526020018061177d6023913960400191505060405180910390fd5b600780546001600160a01b0383166001600160a01b03199091161790555050565b6000610d4b6008547f00000000000000000000000021585bbcd5bdc3f5737620cf0db2e51978cf60ac6001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610d1957600080fd5b505afa158015610d2d573d6000803e3d6000fd5b505050506040513d6020811015610d4357600080fd5b505190611326565b905090565b336000908152600b60205260409020600301805460ff19811660ff90911615179055565b60025460035460045460055484565b8015610d9157610d91610e3f565b610dc66001600160a01b037f000000000000000000000000d9ccb7bd2b66edb2998e9de53bd7883891ca665b163330856113de565b610dfa6001600160a01b037f00000000000000000000000021585bbcd5bdc3f5737620cf0db2e51978cf60ac163384611387565b604080513381526020810184905281517f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f75929181900390910190a15050565b60085481565b600454431061104b577f000000000000000000000000d9ccb7bd2b66edb2998e9de53bd7883891ca665b6001600160a01b031663058ecdb46002600301546002600101546040518363ffffffff1660e01b81526004018083815260200182815260200192505050602060405180830381600087803b158015610ec057600080fd5b505af1158015610ed4573d6000803e3d6000fd5b505050506040513d6020811015610eea57600080fd5b5050600254600454610efb91611326565b6004556003805460010190556006546001600160a01b031615610f9557600660009054906101000a90046001600160a01b03166001600160a01b031663e4fc6b6d6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610f6857600080fd5b505af1158015610f7c573d6000803e3d6000fd5b505050506040513d6020811015610f9257600080fd5b50505b6000610f9f610ca4565b905060007f000000000000000000000000d9ccb7bd2b66edb2998e9de53bd7883891ca665b6001600160a01b0316639358928b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ffc57600080fd5b505afa158015611010573d6000803e3d6000fd5b505050506040513d602081101561102657600080fd5b5051905080821161103b57600060055561067e565b611045828261143e565b60055550505b565b7f00000000000000000000000021585bbcd5bdc3f5737620cf0db2e51978cf60ac81565b6006546001600160a01b031681565b6000546001600160a01b031633146110cd576040805162461bcd60e51b8152602060048201819052602482015260008051602061180b833981519152604482015290519081900360640190fd5b600a55565b6007546001600160a01b031681565b600a5481565b6009546001600160a01b031681565b6110fe611752565b50336000818152600b602081815260408084208151608081018352815481526001820180548286019081526002840180548487015260038501805460ff8116151560608701529a8a5297875293889055908790559590915560ff1990951690925560095492518251637965d56d60e01b8152600481019190915291516001600160a01b039384169363c3a2a6659330937f000000000000000000000000d9ccb7bd2b66edb2998e9de53bd7883891ca665b90921692637965d56d92602480840193919291829003018186803b1580156111d657600080fd5b505afa1580156111ea573d6000803e3d6000fd5b505050506040513d602081101561120057600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b15801561125057600080fd5b505af1158015611264573d6000803e3d6000fd5b5050825161043492506001600160a01b037f00000000000000000000000021585bbcd5bdc3f5737620cf0db2e51978cf60ac1691503390611387565b6007546001600160a01b031633146112b757600080fd5b6008546112c4908261143e565b600855600754610434906001600160a01b037f000000000000000000000000d9ccb7bd2b66edb2998e9de53bd7883891ca665b8116911630846113de565b7f000000000000000000000000d9ccb7bd2b66edb2998e9de53bd7883891ca665b81565b600082820183811015611380576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526113d9908490611480565b505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611438908590611480565b50505050565b600061138083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611531565b60606114d5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166115c89092919063ffffffff16565b8051909150156113d9578080602001905160208110156114f457600080fd5b50516113d95760405162461bcd60e51b815260040180806020018281038252602a81526020018061182b602a913960400191505060405180910390fd5b600081848411156115c05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561158557818101518382015260200161156d565b50505050905090810190601f1680156115b25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60606115d784846000856115df565b949350505050565b60606115ea8561174c565b61163b576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b6020831061167a5780518252601f19909201916020918201910161165b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146116dc576040519150601f19603f3d011682016040523d82523d6000602084013e6116e1565b606091505b509150915081156116f55791506115d79050565b8051156117055780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561158557818101518382015260200161156d565b3b151590565b6040518060800160405280600081526020016000815260200160008152602001600015158152509056fe4c6f636b65722063616e6e6f7420626520736574206d6f7265207468616e206f6e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735761726d75702063616e6e6f7420626520736574206d6f7265207468616e206f6e63654f776e61626c653a206d757374206265206e6577206f776e657220746f2070756c6c4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212206f2a51678cc53e914d5cb9cf9b6e3a465afcb78b6977107b3094ab62a26286ec64736f6c63430007050033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000021585bbcd5bdc3f5737620cf0db2e51978cf60ac000000000000000000000000d9ccb7bd2b66edb2998e9de53bd7883891ca665b000000000000000000000000000000000000000000000000000000000000089800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000cf6c60
-----Decoded View---------------
Arg [0] : _MNFST (address): 0x21585BBcD5bDC3f5737620cf0Db2E51978cf60ac
Arg [1] : _sMNFST (address): 0xd9Ccb7bD2b66edB2998E9De53Bd7883891CA665B
Arg [2] : _epochLength (uint256): 2200
Arg [3] : _firstEpochNumber (uint256): 1
Arg [4] : _firstEpochBlock (uint256): 13593696
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 00000000000000000000000021585bbcd5bdc3f5737620cf0db2e51978cf60ac
Arg [1] : 000000000000000000000000d9ccb7bd2b66edb2998e9de53bd7883891ca665b
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000898
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [4] : 0000000000000000000000000000000000000000000000000000000000cf6c60
Deployed Bytecode Sourcemap
20809:6471:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25762:206;;;;;;;;;;;;;;;;-1:-1:-1;25762:206:0;;:::i;:::-;;19498:159;;;:::i;22993:341::-;;;;;;;;;;;;;;;;-1:-1:-1;22993:341:0;-1:-1:-1;;;;;22993:341:0;;:::i;24522:97::-;;;:::i;:::-;;;;;;;;;;;;;;;;19665:261;;;;;;;;;;;;;;;;-1:-1:-1;19665:261:0;-1:-1:-1;;;;;19665:261:0;;:::i;19271:90::-;;;:::i;:::-;;;;-1:-1:-1;;;;;19271:90:0;;;;;;;;;;;;;;19938:221;;;:::i;22029:45::-;;;;;;;;;;;;;;;;-1:-1:-1;22029:45:0;-1:-1:-1;;;;;22029:45:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22197:690;;;;;;;;;;;;;;;;-1:-1:-1;22197:690:0;;;;;;-1:-1:-1;;;;;22197:690:0;;:::i;:::-;;;;;;;;;;;;;;;;;;26482:570;;;;;;;;;;;;;;;;-1:-1:-1;26482:570:0;;;;;;;;-1:-1:-1;;;;;26482:570:0;;:::i;25507:142::-;;;:::i;23844:119::-;;;:::i;21175:18::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24089:315;;;;;;;;;;;;;;;;-1:-1:-1;24089:315:0;;;;;;;;;:::i;21269:22::-;;;:::i;24691:691::-;;;:::i;20977:30::-;;;:::i;21202:26::-;;;:::i;27166:111::-;;;;;;;;;;;;;;;;-1:-1:-1;27166:111:0;;:::i;21241:21::-;;;:::i;21340:24::-;;;:::i;21304:29::-;;;:::i;23421:311::-;;;:::i;26083:227::-;;;;;;;;;;;;;;;;-1:-1:-1;26083:227:0;;:::i;21014:31::-;;;:::i;25762:206::-;25844:6;;-1:-1:-1;;;;;25844:6:0;25830:10;:20;25821:31;;;;;;25876:10;;:25;;25892:7;25876:14;:25::i;:::-;25863:10;:38;25943:6;;25912:48;;-1:-1:-1;;;;;25920:6:0;25912:29;;;25943:6;25951:7;25912:29;:48::i;:::-;25762:206;:::o;19498:159::-;19412:6;;-1:-1:-1;;;;;19412:6:0;19422:10;19412:20;19403:67;;;;;-1:-1:-1;;;19403:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;19403:67:0;;;;;;;;;;;;;;;19615:1:::1;19599:6:::0;;19582:37:::1;::::0;-1:-1:-1;;;;;19599:6:0;;::::1;::::0;19582:37:::1;::::0;19615:1;;19582:37:::1;19647:1;19630:19:::0;;-1:-1:-1;;;;;;19630:19:0::1;::::0;;19498:159::o;22993:341::-;23049:17;;:::i;:::-;-1:-1:-1;;;;;;23069:24:0;;;;;;:10;:24;;;;;;;;;23049:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23109:12;23049:44;;-1:-1:-1;23109:27:0;;;:47;;-1:-1:-1;23140:11:0;;;;:16;;23109:47;23104:223;;;-1:-1:-1;;;;;23181:24:0;;;;;;;:10;:24;;;;;;;;23174:31;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23174:31:0;;;23229:14;;23302:9;;;;23268:45;;-1:-1:-1;;;23268:45:0;;;;;;;;;;;23229:14;;;;23220:34;;23193:10;;23277:6;23268:32;;;;;;:45;;;;;23181:24;;23268:45;;;;;;:32;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23268:45:0;23220:95;;;-1:-1:-1;;;;;;23220:95:0;;;;;;;-1:-1:-1;;;;;23220:95:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23220:95:0;;;;;;;-1:-1:-1;23220:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23104:223;22993:341;;:::o;24522:97::-;24561:4;24595:6;-1:-1:-1;;;;;24586:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24586:25:0;;-1:-1:-1;24522:97:0;:::o;19665:261::-;19412:6;;-1:-1:-1;;;;;19412:6:0;19422:10;19412:20;19403:67;;;;;-1:-1:-1;;;19403:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;19403:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;19768:23:0;::::1;19759:75;;;;-1:-1:-1::0;;;19759:75:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19867:6;::::0;;19850:36:::1;::::0;-1:-1:-1;;;;;19850:36:0;;::::1;::::0;19867:6;::::1;::::0;19850:36:::1;::::0;::::1;19897:9;:21:::0;;-1:-1:-1;;;;;;19897:21:0::1;-1:-1:-1::0;;;;;19897:21:0;;;::::1;::::0;;;::::1;::::0;;19665:261::o;19271:90::-;19320:7;19347:6;-1:-1:-1;;;;;19347:6:0;19271:90;:::o;19938:221::-;20022:9;;-1:-1:-1;;;;;20022:9:0;20008:10;:23;19999:71;;;;-1:-1:-1;;;19999:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20111:9;;;20103:6;;20086:36;;-1:-1:-1;;;;;20111:9:0;;;;20103:6;;;;20086:36;;;20142:9;;;20133:18;;-1:-1:-1;;;;;;20133:18:0;-1:-1:-1;;;;;20142:9:0;;;20133:18;;;;;;19938:221::o;22029:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22197:690::-;22267:4;22285:8;:6;:8::i;:::-;22314:70;-1:-1:-1;;;;;22322:5:0;22314:32;22348:10;22368:4;22375:7;22314:32;:70::i;:::-;22397:17;;:::i;:::-;-1:-1:-1;;;;;;22417:24:0;;;;;;:10;:24;;;;;;;;;22397:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22452:56;;;;;-1:-1:-1;;;22452:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;22548:232;;;;;;;;;22579:12;;22548:232;;22579:27;;22597:7;22579:16;:27::i;:::-;22548:232;;;;22627:60;22651:6;-1:-1:-1;;;;;22642:32:0;;22676:7;22642:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22642:43:0;;22627:9;;;;:13;:60::i;:::-;22548:232;;22728:12;;22710;;22548:232;;;;;22710:32;;:16;:32::i;:::-;22548:232;;22763:5;22548:232;;;;;;;-1:-1:-1;;;;;22521:24:0;;;;;:10;:24;;;;;;;:259;;;;;;;;22548:232;22521:259;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22521:259:0;;;;;;;;;;22832:14;;22801:56;;22809:6;22801:29;;;22832:14;22848:7;22801:29;:56::i;:::-;-1:-1:-1;22875:4:0;;22197:690;-1:-1:-1;;;22197:690:0:o;26482:570::-;19412:6;;-1:-1:-1;;;;;19412:6:0;19422:10;19412:20;19403:67;;;;;-1:-1:-1;;;19403:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;19403:67:0;;;;;;;;;;;;;;;26595:21:::1;26582:9;:34;;;;;;;;;26578:467;;;26639:11;:22:::0;;-1:-1:-1;;;;;;26639:22:0::1;-1:-1:-1::0;;;;;26639:22:0;::::1;;::::0;;26578:467:::1;;;26697:16;26684:9;:29;;;;;;;;;26679:366;;;26745:14;::::0;-1:-1:-1;;;;;26745:14:0::1;:30:::0;26736:80:::1;;;;-1:-1:-1::0;;;26736:80:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26831:14;:25:::0;;-1:-1:-1;;;;;;26831:25:0::1;-1:-1:-1::0;;;;;26831:25:0;::::1;;::::0;;26679:366:::1;;;26892:16;26879:9;:29;;;;;;;;;26874:171;;;26940:6;::::0;-1:-1:-1;;;;;26940:6:0::1;:20:::0;26931:70:::1;;;;-1:-1:-1::0;;;26931:70:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27016:6;:17:::0;;-1:-1:-1;;;;;27016:17:0;::::1;-1:-1:-1::0;;;;;;27016:17:0;;::::1;;::::0;;26482:570;;:::o;25507:142::-;25556:4;25581:60;25629:10;;25589:5;-1:-1:-1;;;;;25581:25:0;;25616:4;25581:42;;;;;;;;;;;;;-1:-1:-1;;;;;25581:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25581:42:0;;:46;:60::i;:::-;25574:67;;25507:142;:::o;23844:119::-;23938:10;23926:24;;;;:10;:24;;;;;:29;;;;-1:-1:-1;;23893:62:0;;23926:29;;;;23925:30;23893:62;;;23844:119::o;21175:18::-;;;;;;;;;;:::o;24089:315::-;24162:8;24157:51;;;24188:8;:6;:8::i;:::-;24218:71;-1:-1:-1;;;;;24226:6:0;24218:33;24253:10;24273:4;24280:7;24218:33;:71::i;:::-;24300:51;-1:-1:-1;;;;;24308:5:0;24300:28;24330:10;24342:7;24300:28;:51::i;:::-;24367:29;;;24376:10;24367:29;;;;;;;;;;;;;;;;;;;;;24089:315;;:::o;21269:22::-;;;;:::o;24691:691::-;24731:14;;24749:12;-1:-1:-1;24727:648:0;;24790:6;-1:-1:-1;;;;;24781:24:0;;24807:5;:16;;;24825:5;:12;;;24781:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24893:5:0;:12;24873:14;;:34;;:18;:34::i;:::-;24856:14;:51;24922:12;:14;;:12;:14;;;24970:11;;-1:-1:-1;;;;;24970:11:0;:25;24965:108;;25031:11;;;;;;;;;-1:-1:-1;;;;;25031:11:0;-1:-1:-1;;;;;25017:38:0;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24965:108:0;25089:12;25104:17;:15;:17::i;:::-;25089:32;;25136:11;25159:6;-1:-1:-1;;;;;25150:35:0;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25150:37:0;;-1:-1:-1;25208:17:0;;;25204:160;;25266:1;25247:16;:20;25204:160;;;25327:21;:7;25340:6;25327:11;:21::i;:::-;25308:16;:40;24727:648;;;24691:691::o;20977:30::-;;;:::o;21202:26::-;;;-1:-1:-1;;;;;21202:26:0;;:::o;27166:111::-;19412:6;;-1:-1:-1;;;;;19412:6:0;19422:10;19412:20;19403:67;;;;;-1:-1:-1;;;19403:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;19403:67:0;;;;;;;;;;;;;;;27241:12:::1;:28:::0;27166:111::o;21241:21::-;;;-1:-1:-1;;;;;21241:21:0;;:::o;21340:24::-;;;;:::o;21304:29::-;;;-1:-1:-1;;;;;21304:29:0;;:::o;23421:311::-;23460:17;;:::i;:::-;-1:-1:-1;23492:10:0;23480:24;;;;:10;:24;;;;;;;;23460:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23522:24;;;;;;23515:31;;;;;;;;;;;;-1:-1:-1;;23515:31:0;;;;;;23568:14;;23644:9;;23610:45;;-1:-1:-1;;;23610:45:0;;;;;;;;;;;-1:-1:-1;;;;;23568:14:0;;;;23559:34;;23603:4;;23619:6;23610:32;;;;;;:45;;;;;23480:24;;23610:45;;;;;;:32;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23610:45:0;23559:98;;;-1:-1:-1;;;;;;23559:98:0;;;;;;;-1:-1:-1;;;;;23559:98:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23559:98:0;;;;;;;-1:-1:-1;23559:98:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23710:12:0;;23668:56;;-1:-1:-1;;;;;;23676:5:0;23668:28;;-1:-1:-1;23698:10:0;;23668:28;:56::i;26083:227::-;26167:6;;-1:-1:-1;;;;;26167:6:0;26153:10;:20;26144:31;;;;;;26199:10;;:25;;26215:7;26199:14;:25::i;:::-;26186:10;:38;26270:6;;26235:67;;-1:-1:-1;;;;;26243:6:0;26235:33;;;26270:6;26286:4;26293:7;26235:33;:67::i;21014:31::-;;;:::o;336:181::-;394:7;426:5;;;450:6;;;;442:46;;;;;-1:-1:-1;;;442:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;508:1;336:181;-1:-1:-1;;;336:181:0:o;15577:177::-;15687:58;;;-1:-1:-1;;;;;15687:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15687:58:0;-1:-1:-1;;;15687:58:0;;;15660:86;;15680:5;;15660:19;:86::i;:::-;15577:177;;;:::o;15762:205::-;15890:68;;;-1:-1:-1;;;;;15890:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15890:68:0;-1:-1:-1;;;15890:68:0;;;15863:96;;15883:5;;15863:19;:96::i;:::-;15762:205;;;;:::o;800:136::-;858:7;885:43;889:1;892;885:43;;;;;;;;;;;;;;;;;:3;:43::i;17882:761::-;18306:23;18332:69;18360:4;18332:69;;;;;;;;;;;;;;;;;18340:5;-1:-1:-1;;;;;18332:27:0;;;:69;;;;;:::i;:::-;18416:17;;18306:95;;-1:-1:-1;18416:21:0;18412:224;;18558:10;18547:30;;;;;;;;;;;;;;;-1:-1:-1;18547:30:0;18539:85;;;;-1:-1:-1;;;18539:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1239:192;1325:7;1361:12;1353:6;;;;1345:29;;;;-1:-1:-1;;;1345:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1397:5:0;;;1239:192::o;9648:196::-;9751:12;9783:53;9806:6;9814:4;9820:1;9823:12;9783:22;:53::i;:::-;9776:60;9648:196;-1:-1:-1;;;;9648:196:0:o;11239:979::-;11369:12;11402:18;11413:6;11402:10;:18::i;:::-;11394:60;;;;;-1:-1:-1;;;11394:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11528:12;11542:23;11569:6;-1:-1:-1;;;;;11569:11:0;11589:8;11600:4;11569:36;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11569:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11527:78;;;;11620:7;11616:595;;;11651:10;-1:-1:-1;11644:17:0;;-1:-1:-1;11644:17:0;11616:595;11765:17;;:21;11761:439;;12028:10;12022:17;12089:15;12076:10;12072:2;12068:19;12061:44;11976:148;12164:20;;-1:-1:-1;;;12164:20:0;;;;;;;;;;;;;;;;;12171:12;;12164:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6730:422;7097:20;7136:8;;;6730:422::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
ipfs://6f2a51678cc53e914d5cb9cf9b6e3a465afcb78b6977107b3094ab62a26286ec
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 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.