Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 2,099 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Unboost | 16225050 | 652 days ago | IN | 0 ETH | 0.00095424 | ||||
Unboost | 16225050 | 652 days ago | IN | 0 ETH | 0.00095424 | ||||
Unboost | 16225050 | 652 days ago | IN | 0 ETH | 0.00191593 | ||||
Unboost | 16137076 | 665 days ago | IN | 0 ETH | 0.00248591 | ||||
Unstake | 15796482 | 712 days ago | IN | 0 ETH | 0.0026969 | ||||
Unstake | 15765266 | 717 days ago | IN | 0 ETH | 0.0015344 | ||||
Unstake | 15675364 | 729 days ago | IN | 0 ETH | 0.00231702 | ||||
Unstake | 15535192 | 749 days ago | IN | 0 ETH | 0.00116867 | ||||
Unboost | 15482189 | 757 days ago | IN | 0 ETH | 0.00099592 | ||||
Unstake | 15390515 | 772 days ago | IN | 0 ETH | 0.00175057 | ||||
Unstake | 15377729 | 774 days ago | IN | 0 ETH | 0.00080982 | ||||
Unboost | 15355894 | 778 days ago | IN | 0 ETH | 0.00323084 | ||||
Unstake | 15355891 | 778 days ago | IN | 0 ETH | 0.0025716 | ||||
Unboost | 15336326 | 781 days ago | IN | 0 ETH | 0.00072402 | ||||
Boost | 15336295 | 781 days ago | IN | 0 ETH | 0.00122802 | ||||
Unboost | 15300520 | 786 days ago | IN | 0 ETH | 0.00172819 | ||||
Unstake | 15249149 | 794 days ago | IN | 0 ETH | 0.0007397 | ||||
Unboost | 15249142 | 794 days ago | IN | 0 ETH | 0.00112578 | ||||
Unstake | 15236700 | 796 days ago | IN | 0 ETH | 0.00167232 | ||||
Unstake | 15234460 | 797 days ago | IN | 0 ETH | 0.00104428 | ||||
Unstake | 15185814 | 804 days ago | IN | 0 ETH | 0.00117412 | ||||
Unboost | 15158851 | 808 days ago | IN | 0 ETH | 0.00199061 | ||||
Unstake | 15157498 | 809 days ago | IN | 0 ETH | 0.00190246 | ||||
Unstake | 15133471 | 812 days ago | IN | 0 ETH | 0.00127893 | ||||
Unboost | 15133467 | 812 days ago | IN | 0 ETH | 0.0015107 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
MonasteryStaking
Compiler Version
v0.7.5+commit.eb77ed08
Optimization Enabled:
Yes with 800 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity 0.7.5; import "./libraries/SafeMath.sol"; import "./libraries/ERC20.sol"; import "./interfaces/IERC721.sol"; import "./libraries/Ownable.sol"; interface IZEN { function rebase( uint256 monkProfit_, 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 ); function boost(address who) external; function unboost(address who) external; } interface IWarmup { function retrieve( address staker_, uint amount_ ) external; } interface IDistributor { function distribute() external returns ( bool ); } contract MonasteryStaking is Ownable { using SafeMath for uint256; using SafeERC20 for IERC20; address public immutable MONK; address public immutable ZEN; address public NFT; struct Epoch { uint length; // in seconds uint number; uint endTime; // unix epoch time in seconds uint distribute; } Epoch public epoch; address public distributor; address public locker; uint public totalBonus; address public warmupContract; uint public warmupPeriod; constructor ( address _MONK, address _ZEN, uint _epochLength, uint _firstEpochNumber, uint _firstEpochTime ) { require( _MONK != address(0) ); MONK = _MONK; require( _ZEN != address(0) ); ZEN = _ZEN; epoch = Epoch({ length: _epochLength, number: _firstEpochNumber, endTime: _firstEpochTime, distribute: 0 }); } struct Claim { uint deposit; uint gons; uint expiry; bool lock; // prevents malicious delays } mapping( address => Claim ) public warmupInfo; mapping( address => uint256 ) public NFTOf; function setNFT(address _NFT) public onlyOwner() { require(_NFT != address(0)); NFT = _NFT; } function stake( uint _amount, address _recipient ) external returns ( bool ) { rebase(); IERC20( MONK ).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( IZEN( ZEN ).gonsForBalance( _amount ) ), expiry: epoch.number.add( warmupPeriod ), lock: false }); IERC20( ZEN ).safeTransfer( warmupContract, _amount ); return true; } function boost( uint256 tokenId ) external returns ( bool ) { rebase(); IERC721(NFT).transferFrom(msg.sender, address(this), tokenId); NFTOf[msg.sender] = tokenId; IZEN( ZEN ).boost(msg.sender); return true; } function unboost() external returns ( bool ) { rebase(); IZEN( ZEN ).unboost(msg.sender); uint256 tokenId = NFTOf[msg.sender]; NFTOf[msg.sender] = 0; IERC721(NFT).transferFrom(address(this), msg.sender, tokenId); return true; } /** @notice retrieve ZEN 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, IZEN( ZEN ).balanceForGons( info.gons ) ); } } /** @notice forfeit ZEN in warmup and retrieve MONK */ function forfeit() external { Claim memory info = warmupInfo[ msg.sender ]; delete warmupInfo[ msg.sender ]; IWarmup( warmupContract ).retrieve( address(this), IZEN( ZEN ).balanceForGons( info.gons ) ); IERC20( MONK ).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 ZEN for MONK @param _amount uint @param _trigger bool */ function unstake( uint _amount, bool _trigger ) external { if ( _trigger ) { rebase(); } IERC20( ZEN ).safeTransferFrom( msg.sender, address(this), _amount ); IERC20( MONK ).safeTransfer( msg.sender, _amount ); } /** @notice returns the ZEN index, which tracks rebase growth @return uint */ function index() public view returns ( uint ) { return IZEN( ZEN ).index(); } /** @notice trigger rebase if epoch over */ function rebase() public { if( epoch.endTime <= block.timestamp ) { IZEN( ZEN ).rebase( epoch.distribute, epoch.number ); epoch.endTime = epoch.endTime.add( epoch.length ); epoch.number++; if ( distributor != address(0) ) { IDistributor( distributor ).distribute(); } uint balance = contractBalance(); uint staked = IZEN( ZEN ).circulatingSupply(); if( balance <= staked ) { epoch.distribute = 0; } else { epoch.distribute = balance.sub( staked ); } } } /** @notice returns contract MONK holdings, including bonuses provided @return uint */ function contractBalance() public view returns ( uint ) { return IERC20( MONK ).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( ZEN ).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( ZEN ).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 onlyOwner() { 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 onlyOwner() { warmupPeriod = _warmupPeriod; } }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity 0.7.5; library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by 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; } function sqrrt(uint256 a) internal pure returns (uint c) { if (a > 3) { c = a; uint b = add( div( a, 2), 1 ); while (b < c) { c = b; b = div( add( div( a, b ), b), 2 ); } } else if (a != 0) { c = 1; } } }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity 0.7.5; import "../interfaces/IERC20.sol"; import "./SafeMath.sol"; import "./Counters.sol"; import "./Address.sol"; abstract contract ERC20 is IERC20 { using SafeMath for uint256; // TODO comment actual hash value. bytes32 constant private ERC20TOKEN_ERC1820_INTERFACE_ID = keccak256( "ERC20Token" ); mapping (address => uint256) internal _balances; mapping (address => mapping (address => uint256)) internal _allowances; uint256 internal _totalSupply; string internal _name; string internal _symbol; uint8 internal _decimals; constructor (string memory name_, string memory symbol_, uint8 decimals_) { _name = name_; _symbol = symbol_; _decimals = decimals_; } function name() public view override returns (string memory) { return _name; } function symbol() public view override returns (string memory) { return _symbol; } function decimals() public view override returns (uint8) { return _decimals; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(msg.sender, spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account_, uint256 ammount_) internal virtual { require(account_ != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address( this ), account_, ammount_); _totalSupply = _totalSupply.add(ammount_); _balances[account_] = _balances[account_].add(ammount_); emit Transfer(address( this ), account_, ammount_); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from_, address to_, uint256 amount_ ) internal virtual { } } interface IERC2612Permit { function permit( address owner, address spender, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; function nonces(address owner) external view returns (uint256); } abstract contract ERC20Permit is ERC20, IERC2612Permit { using Counters for Counters.Counter; mapping(address => Counters.Counter) private _nonces; // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"); bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9; bytes32 public DOMAIN_SEPARATOR; constructor() { uint256 chainID; assembly { chainID := chainid() } DOMAIN_SEPARATOR = keccak256( abi.encode( keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"), keccak256(bytes(name())), keccak256(bytes("1")), // Version chainID, address(this) ) ); } function permit( address owner, address spender, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) public virtual override { require(block.timestamp <= deadline, "Permit: expired deadline"); bytes32 hashStruct = keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, amount, _nonces[owner].current(), deadline)); bytes32 _hash = keccak256(abi.encodePacked(uint16(0x1901), DOMAIN_SEPARATOR, hashStruct)); address signer = ecrecover(_hash, v, r, s); require(signer != address(0) && signer == owner, "Permit: Invalid signature"); _nonces[owner].increment(); _approve(owner, spender, amount); } function nonces(address owner) public view override returns (uint256) { return _nonces[owner].current(); } } 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)); } function safeApprove(IERC20 token, address spender, uint256 value) internal { 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)); } function _callOptionalReturn(IERC20 token, bytes memory data) private { 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"); } } }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IERC721 { function balanceOf(address owner) external view returns (uint256 balance); function ownerOf(uint256 tokenId) external view returns (address owner); function safeTransferFrom( address from, address to, uint256 tokenId ) external; function transferFrom( address from, address to, uint256 tokenId ) external; function approve(address to, uint256 tokenId) external; function getApproved(uint256 tokenId) external view returns (address operator); function setApprovalForAll(address operator, bool _approved) external; function isApprovedForAll(address owner, address operator) external view returns (bool); function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity 0.7.5; interface IOwnable { function owner() 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 owner() public view override returns (address) { return _owner; } modifier onlyOwner() { require( _owner == msg.sender, "Ownable: caller is not the owner" ); _; } function renounceManagement() public virtual override onlyOwner() { emit OwnershipPushed( _owner, address(0) ); _owner = address(0); } function pushManagement( address newOwner_ ) public virtual override onlyOwner() { 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; } }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IERC20 { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); } interface IERC20Mintable { function mint( uint256 amount_ ) external; function mint( address account_, uint256 ammount_ ) external; }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity 0.7.5; import "./SafeMath.sol"; library Counters { using SafeMath for uint256; struct Counter { uint256 _value; // default: 0 } function current(Counter storage counter) internal view returns (uint256) { return counter._value; } function increment(Counter storage counter) internal { counter._value += 1; } function decrement(Counter storage counter) internal { counter._value = counter._value.sub(1); } }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity 0.7.5; library Address { function isContract(address account) internal view returns (bool) { uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } 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"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } 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"); } 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); } } } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } 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); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } 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 { if (returndata.length > 0) { 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); } }
{ "optimizer": { "enabled": true, "runs": 800 }, "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":[{"internalType":"address","name":"_MONK","type":"address"},{"internalType":"address","name":"_ZEN","type":"address"},{"internalType":"uint256","name":"_epochLength","type":"uint256"},{"internalType":"uint256","name":"_firstEpochNumber","type":"uint256"},{"internalType":"uint256","name":"_firstEpochTime","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"},{"inputs":[],"name":"MONK","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NFT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"NFTOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ZEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"boost","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":"endTime","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":"owner","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":[{"internalType":"enum MonasteryStaking.CONTRACTS","name":"_contract","type":"uint8"},{"internalType":"address","name":"_address","type":"address"}],"name":"setContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_NFT","type":"address"}],"name":"setNFT","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":[],"name":"unboost","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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
60c060405234801561001057600080fd5b50604051611e14380380611e14833981810160405260a081101561003357600080fd5b50805160208201516040808401516060850151608090950151600080546001600160a01b031916331780825593519596949592949391926001600160a01b0392909216917fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba908290a36001600160a01b0385166100af57600080fd5b6001600160601b0319606086901b166080526001600160a01b0384166100d457600080fd5b6001600160601b0319606094851b1660a0526040805160808101825284815260208101849052908101829052600094018490526003929092556004556005556006555060805160601c60a05160601c611c84610190600039806104eb528061068752806107ca52806108c152806108e75280610c615280610d6d528061104452806110d052806111f2528061131f52806114f852806116ec5250806105195280610b6b5280610f45528061107952806115f75250611c846000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80638da5cb5b11610104578063bfe10928116100a2578063ed4acaa811610071578063ed4acaa814610460578063f3d86e4a14610468578063f56e9c6614610470578063f62ae76a14610496576101da565b8063bfe109281461042b578063c9f464ff14610433578063d7b96d4e14610450578063deac361a14610458576101da565b80639ebea88c116100de5780639ebea88c146103ee578063a8dd07dc14610413578063ac7105831461041b578063af14052c14610423576101da565b80638da5cb5b146103b05780638f077b83146103b8578063900cf0cf146103c0576101da565b80632b663d2a1161017c5780637acb77571161014b5780637acb7757146103455780637c0b8de214610371578063865e6fd3146103795780638b7afe2e146103a8576101da565b80632b663d2a146102a357806346f68ee9146102c95780635a96ac0a146102ef5780636746f4c2146102f7576101da565b80631b55d19e116101b85780631b55d19e1461022a5780631e83409a1461025b578063258d4085146102815780632986c0e514610289576101da565b806303c23670146101df57806303e83ad4146101fe578063089208d814610222575b600080fd5b6101fc600480360360208110156101f557600080fd5b50356104b3565b005b610206610517565b604080516001600160a01b039092168252519081900360200190f35b6101fc61053b565b6102476004803603602081101561024057600080fd5b50356105e4565b604080519115158252519081900360200190f35b6101fc6004803603602081101561027157600080fd5b50356001600160a01b03166106f3565b6102066108bf565b6102916108e3565b60408051918252519081900360200190f35b610291600480360360208110156102b957600080fd5b50356001600160a01b031661096f565b6101fc600480360360208110156102df57600080fd5b50356001600160a01b0316610981565b6101fc610a80565b61031d6004803603602081101561030d57600080fd5b50356001600160a01b0316610b2a565b6040805194855260208501939093528383019190915215156060830152519081900360800190f35b6102476004803603604081101561035b57600080fd5b50803590602001356001600160a01b0316610b54565b610206610da0565b6101fc6004803603604081101561038f57600080fd5b50803560ff1690602001356001600160a01b0316610daf565b610291610f3b565b610206610fe7565b6101fc610ff6565b6103c861101a565b604080519485526020850193909352838301919091526060830152519081900360800190f35b6101fc6004803603604081101561040457600080fd5b50803590602001351515611029565b6102916110a0565b6102476110a6565b6101fc6111bc565b6102066113c7565b6101fc6004803603602081101561044957600080fd5b50356113d6565b61020661143a565b610291611449565b61020661144f565b6101fc61145e565b6101fc6004803603602081101561048657600080fd5b50356001600160a01b0316611620565b6101fc600480360360208110156104ac57600080fd5b50356116b4565b6008546001600160a01b031633146104ca57600080fd5b6009546104d79082611716565b600955600854610514906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911683611777565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b0316331461059a576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba908390a3600080546001600160a01b0319169055565b60006105ee6111bc565b600254604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216916323b872dd9160648082019260009290919082900301818387803b15801561064757600080fd5b505af115801561065b573d6000803e3d6000fd5b5050336000818152600d6020526040808220879055805163b7c6ad2f60e01b81526004810193909352517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316945063b7c6ad2f935060248084019382900301818387803b1580156106d357600080fd5b505af11580156106e7573d6000803e3d6000fd5b50600195945050505050565b6106fb611b6c565b506001600160a01b0381166000908152600c602090815260409182902082516080810184528154815260018201549281019290925260028101549282018390526003015460ff161515606082015260045490911180159061075f5750604081015115155b156108bb576001600160a01b038083166000908152600c602090815260408083208381556001810184905560028101939093556003909201805460ff19169055600a54848201518351637965d56d60e01b8152600481019190915292519084169363c3a2a6659387937f000000000000000000000000000000000000000000000000000000000000000090921692637965d56d92602480840193919291829003018186803b15801561081057600080fd5b505afa158015610824573d6000803e3d6000fd5b505050506040513d602081101561083a57600080fd5b5051604080517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b1580156108a257600080fd5b505af11580156108b6573d6000803e3d6000fd5b505050505b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632986c0e56040518163ffffffff1660e01b815260040160206040518083038186803b15801561093e57600080fd5b505afa158015610952573d6000803e3d6000fd5b505050506040513d602081101561096857600080fd5b5051905090565b600d6020526000908152604090205481565b6000546001600160a01b031633146109e0576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116610a255760405162461bcd60e51b8152600401808060200182810382526026815260200180611bba6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba91a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b03163314610ac95760405162461bcd60e51b8152600401808060200182810382526022815260200180611c036022913960400191505060405180910390fd5b600154600080546040516001600160a01b0393841693909116917faa151555690c956fc3ea32f106bb9f119b5237a061eaa8557cff3e51e3792c8d91a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b600c6020526000908152604090208054600182015460028301546003909301549192909160ff1684565b6000610b5e6111bc565b610b936001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330866117e3565b610b9b611b6c565b506001600160a01b0382166000908152600c602090815260409182902082516080810184528154815260018201549281019290925260028101549282019290925260039091015460ff161580156060830152610c3e576040805162461bcd60e51b815260206004820152601f60248201527f4465706f7369747320666f72206163636f756e7420617265206c6f636b656400604482015290519081900360640190fd5b604080516080810190915281518190610c579087611716565b8152602001610cfa7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631bd39674886040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610cc357600080fd5b505afa158015610cd7573d6000803e3d6000fd5b505050506040513d6020811015610ced57600080fd5b5051602085015190611716565b8152600b54600454602090920191610d1191611716565b8152600060209182018190526001600160a01b038681168252600c8352604091829020845181559284015160018401559083015160028301556060909201516003909101805460ff1916911515919091179055600a54610d96917f00000000000000000000000000000000000000000000000000000000000000008116911686611777565b5060019392505050565b6002546001600160a01b031681565b6000546001600160a01b03163314610e0e576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000826002811115610e1c57fe5b1415610e4257600780546001600160a01b0319166001600160a01b0383161790556108bb565b6001826002811115610e5057fe5b1415610ebe57600a546001600160a01b031615610e9e5760405162461bcd60e51b8152600401808060200182810382526023815260200180611be06023913960400191505060405180910390fd5b600a80546001600160a01b0319166001600160a01b0383161790556108bb565b6002826002811115610ecc57fe5b14156108bb576008546001600160a01b031615610f1a5760405162461bcd60e51b8152600401808060200182810382526023815260200180611b976023913960400191505060405180910390fd5b600880546001600160a01b0383166001600160a01b03199091161790555050565b6000610fe26009547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610fb057600080fd5b505afa158015610fc4573d6000803e3d6000fd5b505050506040513d6020811015610fda57600080fd5b505190611716565b905090565b6000546001600160a01b031690565b336000908152600c60205260409020600301805460ff19811660ff90911615179055565b60035460045460055460065484565b8015611037576110376111bc565b61106c6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330856117e3565b6108bb6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163384611777565b60095481565b60006110b06111bc565b60408051634d9019fb60e11b815233600482015290516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691639b2033f691602480830192600092919082900301818387803b15801561111757600080fd5b505af115801561112b573d6000803e3d6000fd5b5050336000818152600d602052604080822080549083905560025482516323b872dd60e01b815230600482015260248101959095526044850182905291519095506001600160a01b0390911693506323b872dd92606480820193929182900301818387803b15801561119c57600080fd5b505af11580156111b0573d6000803e3d6000fd5b50505050600191505090565b60055442106113c5576006546004805460408051630163b36d60e21b815292830193909352602482015290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163058ecdb49160448083019260209291908290030181600087803b15801561123a57600080fd5b505af115801561124e573d6000803e3d6000fd5b505050506040513d602081101561126457600080fd5b505060035460055461127591611716565b6005556004805460010190556007546001600160a01b03161561130f57600760009054906101000a90046001600160a01b03166001600160a01b031663e4fc6b6d6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156112e257600080fd5b505af11580156112f6573d6000803e3d6000fd5b505050506040513d602081101561130c57600080fd5b50505b6000611319610f3b565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639358928b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561137657600080fd5b505afa15801561138a573d6000803e3d6000fd5b505050506040513d60208110156113a057600080fd5b505190508082116113b55760006006556108bb565b6113bf8282611858565b60065550505b565b6007546001600160a01b031681565b6000546001600160a01b03163314611435576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600b55565b6008546001600160a01b031681565b600b5481565b600a546001600160a01b031681565b611466611b6c565b50336000818152600c602081815260408084208151608081018352815481526001820180548286019081526002840180548487015260038501805460ff8116151560608701529a8a5297875293889055908790559590915560ff19909516909255600a5492518251637965d56d60e01b8152600481019190915291516001600160a01b039384169363c3a2a6659330937f000000000000000000000000000000000000000000000000000000000000000090921692637965d56d92602480840193919291829003018186803b15801561153e57600080fd5b505afa158015611552573d6000803e3d6000fd5b505050506040513d602081101561156857600080fd5b5051604080517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b1580156115d057600080fd5b505af11580156115e4573d6000803e3d6000fd5b5050825161051492506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691503390611777565b6000546001600160a01b0316331461167f576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b03811661169257600080fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6008546001600160a01b031633146116cb57600080fd5b6009546116d89082611858565b600955600854610514906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911630846117e3565b600082820183811015611770576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526117de90849061189a565b505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b17905261185290859061189a565b50505050565b600061177083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061194b565b60606118ef826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166119e29092919063ffffffff16565b8051909150156117de5780806020019051602081101561190e57600080fd5b50516117de5760405162461bcd60e51b815260040180806020018281038252602a815260200180611c25602a913960400191505060405180910390fd5b600081848411156119da5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561199f578181015183820152602001611987565b50505050905090810190601f1680156119cc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60606119f184846000856119f9565b949350505050565b6060611a0485611b66565b611a55576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310611a945780518252601f199092019160209182019101611a75565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611af6576040519150601f19603f3d011682016040523d82523d6000602084013e611afb565b606091505b50915091508115611b0f5791506119f19050565b805115611b1f5780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561199f578181015183820152602001611987565b3b151590565b6040518060800160405280600081526020016000815260200160008152602001600015158152509056fe4c6f636b65722063616e6e6f7420626520736574206d6f7265207468616e206f6e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735761726d75702063616e6e6f7420626520736574206d6f7265207468616e206f6e63654f776e61626c653a206d757374206265206e6577206f776e657220746f2070756c6c5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220847791b0f36a43d5a0d035384947e8d23126bbc99398d84eb7fa3f78eee52c5464736f6c63430007050033000000000000000000000000a4e27ea37d18bb0f483779f9e75a6024efa5e73e000000000000000000000000b634b684e12686d0cf19c862cf2c99fbed221e4d0000000000000000000000000000000000000000000000000000000000007080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000621fd352
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80638da5cb5b11610104578063bfe10928116100a2578063ed4acaa811610071578063ed4acaa814610460578063f3d86e4a14610468578063f56e9c6614610470578063f62ae76a14610496576101da565b8063bfe109281461042b578063c9f464ff14610433578063d7b96d4e14610450578063deac361a14610458576101da565b80639ebea88c116100de5780639ebea88c146103ee578063a8dd07dc14610413578063ac7105831461041b578063af14052c14610423576101da565b80638da5cb5b146103b05780638f077b83146103b8578063900cf0cf146103c0576101da565b80632b663d2a1161017c5780637acb77571161014b5780637acb7757146103455780637c0b8de214610371578063865e6fd3146103795780638b7afe2e146103a8576101da565b80632b663d2a146102a357806346f68ee9146102c95780635a96ac0a146102ef5780636746f4c2146102f7576101da565b80631b55d19e116101b85780631b55d19e1461022a5780631e83409a1461025b578063258d4085146102815780632986c0e514610289576101da565b806303c23670146101df57806303e83ad4146101fe578063089208d814610222575b600080fd5b6101fc600480360360208110156101f557600080fd5b50356104b3565b005b610206610517565b604080516001600160a01b039092168252519081900360200190f35b6101fc61053b565b6102476004803603602081101561024057600080fd5b50356105e4565b604080519115158252519081900360200190f35b6101fc6004803603602081101561027157600080fd5b50356001600160a01b03166106f3565b6102066108bf565b6102916108e3565b60408051918252519081900360200190f35b610291600480360360208110156102b957600080fd5b50356001600160a01b031661096f565b6101fc600480360360208110156102df57600080fd5b50356001600160a01b0316610981565b6101fc610a80565b61031d6004803603602081101561030d57600080fd5b50356001600160a01b0316610b2a565b6040805194855260208501939093528383019190915215156060830152519081900360800190f35b6102476004803603604081101561035b57600080fd5b50803590602001356001600160a01b0316610b54565b610206610da0565b6101fc6004803603604081101561038f57600080fd5b50803560ff1690602001356001600160a01b0316610daf565b610291610f3b565b610206610fe7565b6101fc610ff6565b6103c861101a565b604080519485526020850193909352838301919091526060830152519081900360800190f35b6101fc6004803603604081101561040457600080fd5b50803590602001351515611029565b6102916110a0565b6102476110a6565b6101fc6111bc565b6102066113c7565b6101fc6004803603602081101561044957600080fd5b50356113d6565b61020661143a565b610291611449565b61020661144f565b6101fc61145e565b6101fc6004803603602081101561048657600080fd5b50356001600160a01b0316611620565b6101fc600480360360208110156104ac57600080fd5b50356116b4565b6008546001600160a01b031633146104ca57600080fd5b6009546104d79082611716565b600955600854610514906001600160a01b037f000000000000000000000000b634b684e12686d0cf19c862cf2c99fbed221e4d8116911683611777565b50565b7f000000000000000000000000a4e27ea37d18bb0f483779f9e75a6024efa5e73e81565b6000546001600160a01b0316331461059a576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba908390a3600080546001600160a01b0319169055565b60006105ee6111bc565b600254604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216916323b872dd9160648082019260009290919082900301818387803b15801561064757600080fd5b505af115801561065b573d6000803e3d6000fd5b5050336000818152600d6020526040808220879055805163b7c6ad2f60e01b81526004810193909352517f000000000000000000000000b634b684e12686d0cf19c862cf2c99fbed221e4d6001600160a01b0316945063b7c6ad2f935060248084019382900301818387803b1580156106d357600080fd5b505af11580156106e7573d6000803e3d6000fd5b50600195945050505050565b6106fb611b6c565b506001600160a01b0381166000908152600c602090815260409182902082516080810184528154815260018201549281019290925260028101549282018390526003015460ff161515606082015260045490911180159061075f5750604081015115155b156108bb576001600160a01b038083166000908152600c602090815260408083208381556001810184905560028101939093556003909201805460ff19169055600a54848201518351637965d56d60e01b8152600481019190915292519084169363c3a2a6659387937f000000000000000000000000b634b684e12686d0cf19c862cf2c99fbed221e4d90921692637965d56d92602480840193919291829003018186803b15801561081057600080fd5b505afa158015610824573d6000803e3d6000fd5b505050506040513d602081101561083a57600080fd5b5051604080517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b1580156108a257600080fd5b505af11580156108b6573d6000803e3d6000fd5b505050505b5050565b7f000000000000000000000000b634b684e12686d0cf19c862cf2c99fbed221e4d81565b60007f000000000000000000000000b634b684e12686d0cf19c862cf2c99fbed221e4d6001600160a01b0316632986c0e56040518163ffffffff1660e01b815260040160206040518083038186803b15801561093e57600080fd5b505afa158015610952573d6000803e3d6000fd5b505050506040513d602081101561096857600080fd5b5051905090565b600d6020526000908152604090205481565b6000546001600160a01b031633146109e0576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116610a255760405162461bcd60e51b8152600401808060200182810382526026815260200180611bba6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba91a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b03163314610ac95760405162461bcd60e51b8152600401808060200182810382526022815260200180611c036022913960400191505060405180910390fd5b600154600080546040516001600160a01b0393841693909116917faa151555690c956fc3ea32f106bb9f119b5237a061eaa8557cff3e51e3792c8d91a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b600c6020526000908152604090208054600182015460028301546003909301549192909160ff1684565b6000610b5e6111bc565b610b936001600160a01b037f000000000000000000000000a4e27ea37d18bb0f483779f9e75a6024efa5e73e163330866117e3565b610b9b611b6c565b506001600160a01b0382166000908152600c602090815260409182902082516080810184528154815260018201549281019290925260028101549282019290925260039091015460ff161580156060830152610c3e576040805162461bcd60e51b815260206004820152601f60248201527f4465706f7369747320666f72206163636f756e7420617265206c6f636b656400604482015290519081900360640190fd5b604080516080810190915281518190610c579087611716565b8152602001610cfa7f000000000000000000000000b634b684e12686d0cf19c862cf2c99fbed221e4d6001600160a01b0316631bd39674886040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610cc357600080fd5b505afa158015610cd7573d6000803e3d6000fd5b505050506040513d6020811015610ced57600080fd5b5051602085015190611716565b8152600b54600454602090920191610d1191611716565b8152600060209182018190526001600160a01b038681168252600c8352604091829020845181559284015160018401559083015160028301556060909201516003909101805460ff1916911515919091179055600a54610d96917f000000000000000000000000b634b684e12686d0cf19c862cf2c99fbed221e4d8116911686611777565b5060019392505050565b6002546001600160a01b031681565b6000546001600160a01b03163314610e0e576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000826002811115610e1c57fe5b1415610e4257600780546001600160a01b0319166001600160a01b0383161790556108bb565b6001826002811115610e5057fe5b1415610ebe57600a546001600160a01b031615610e9e5760405162461bcd60e51b8152600401808060200182810382526023815260200180611be06023913960400191505060405180910390fd5b600a80546001600160a01b0319166001600160a01b0383161790556108bb565b6002826002811115610ecc57fe5b14156108bb576008546001600160a01b031615610f1a5760405162461bcd60e51b8152600401808060200182810382526023815260200180611b976023913960400191505060405180910390fd5b600880546001600160a01b0383166001600160a01b03199091161790555050565b6000610fe26009547f000000000000000000000000a4e27ea37d18bb0f483779f9e75a6024efa5e73e6001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610fb057600080fd5b505afa158015610fc4573d6000803e3d6000fd5b505050506040513d6020811015610fda57600080fd5b505190611716565b905090565b6000546001600160a01b031690565b336000908152600c60205260409020600301805460ff19811660ff90911615179055565b60035460045460055460065484565b8015611037576110376111bc565b61106c6001600160a01b037f000000000000000000000000b634b684e12686d0cf19c862cf2c99fbed221e4d163330856117e3565b6108bb6001600160a01b037f000000000000000000000000a4e27ea37d18bb0f483779f9e75a6024efa5e73e163384611777565b60095481565b60006110b06111bc565b60408051634d9019fb60e11b815233600482015290516001600160a01b037f000000000000000000000000b634b684e12686d0cf19c862cf2c99fbed221e4d1691639b2033f691602480830192600092919082900301818387803b15801561111757600080fd5b505af115801561112b573d6000803e3d6000fd5b5050336000818152600d602052604080822080549083905560025482516323b872dd60e01b815230600482015260248101959095526044850182905291519095506001600160a01b0390911693506323b872dd92606480820193929182900301818387803b15801561119c57600080fd5b505af11580156111b0573d6000803e3d6000fd5b50505050600191505090565b60055442106113c5576006546004805460408051630163b36d60e21b815292830193909352602482015290516001600160a01b037f000000000000000000000000b634b684e12686d0cf19c862cf2c99fbed221e4d169163058ecdb49160448083019260209291908290030181600087803b15801561123a57600080fd5b505af115801561124e573d6000803e3d6000fd5b505050506040513d602081101561126457600080fd5b505060035460055461127591611716565b6005556004805460010190556007546001600160a01b03161561130f57600760009054906101000a90046001600160a01b03166001600160a01b031663e4fc6b6d6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156112e257600080fd5b505af11580156112f6573d6000803e3d6000fd5b505050506040513d602081101561130c57600080fd5b50505b6000611319610f3b565b905060007f000000000000000000000000b634b684e12686d0cf19c862cf2c99fbed221e4d6001600160a01b0316639358928b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561137657600080fd5b505afa15801561138a573d6000803e3d6000fd5b505050506040513d60208110156113a057600080fd5b505190508082116113b55760006006556108bb565b6113bf8282611858565b60065550505b565b6007546001600160a01b031681565b6000546001600160a01b03163314611435576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600b55565b6008546001600160a01b031681565b600b5481565b600a546001600160a01b031681565b611466611b6c565b50336000818152600c602081815260408084208151608081018352815481526001820180548286019081526002840180548487015260038501805460ff8116151560608701529a8a5297875293889055908790559590915560ff19909516909255600a5492518251637965d56d60e01b8152600481019190915291516001600160a01b039384169363c3a2a6659330937f000000000000000000000000b634b684e12686d0cf19c862cf2c99fbed221e4d90921692637965d56d92602480840193919291829003018186803b15801561153e57600080fd5b505afa158015611552573d6000803e3d6000fd5b505050506040513d602081101561156857600080fd5b5051604080517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b1580156115d057600080fd5b505af11580156115e4573d6000803e3d6000fd5b5050825161051492506001600160a01b037f000000000000000000000000a4e27ea37d18bb0f483779f9e75a6024efa5e73e1691503390611777565b6000546001600160a01b0316331461167f576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b03811661169257600080fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6008546001600160a01b031633146116cb57600080fd5b6009546116d89082611858565b600955600854610514906001600160a01b037f000000000000000000000000b634b684e12686d0cf19c862cf2c99fbed221e4d8116911630846117e3565b600082820183811015611770576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526117de90849061189a565b505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b17905261185290859061189a565b50505050565b600061177083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061194b565b60606118ef826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166119e29092919063ffffffff16565b8051909150156117de5780806020019051602081101561190e57600080fd5b50516117de5760405162461bcd60e51b815260040180806020018281038252602a815260200180611c25602a913960400191505060405180910390fd5b600081848411156119da5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561199f578181015183820152602001611987565b50505050905090810190601f1680156119cc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60606119f184846000856119f9565b949350505050565b6060611a0485611b66565b611a55576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310611a945780518252601f199092019160209182019101611a75565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611af6576040519150601f19603f3d011682016040523d82523d6000602084013e611afb565b606091505b50915091508115611b0f5791506119f19050565b805115611b1f5780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561199f578181015183820152602001611987565b3b151590565b6040518060800160405280600081526020016000815260200160008152602001600015158152509056fe4c6f636b65722063616e6e6f7420626520736574206d6f7265207468616e206f6e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735761726d75702063616e6e6f7420626520736574206d6f7265207468616e206f6e63654f776e61626c653a206d757374206265206e6577206f776e657220746f2070756c6c5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220847791b0f36a43d5a0d035384947e8d23126bbc99398d84eb7fa3f78eee52c5464736f6c63430007050033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000a4e27ea37d18bb0f483779f9e75a6024efa5e73e000000000000000000000000b634b684e12686d0cf19c862cf2c99fbed221e4d0000000000000000000000000000000000000000000000000000000000007080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000621fd352
-----Decoded View---------------
Arg [0] : _MONK (address): 0xa4E27ea37D18bb0f483779f9E75A6024EFa5E73e
Arg [1] : _ZEN (address): 0xb634b684e12686D0cf19c862cF2c99FBeD221e4D
Arg [2] : _epochLength (uint256): 28800
Arg [3] : _firstEpochNumber (uint256): 1
Arg [4] : _firstEpochTime (uint256): 1646252882
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000a4e27ea37d18bb0f483779f9e75a6024efa5e73e
Arg [1] : 000000000000000000000000b634b684e12686d0cf19c862cf2c99fbed221e4d
Arg [2] : 0000000000000000000000000000000000000000000000000000000000007080
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [4] : 00000000000000000000000000000000000000000000000000000000621fd352
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 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.