More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 2,347 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 18480839 | 265 days ago | IN | 0 ETH | 0.0020711 | ||||
Withdraw | 18480676 | 265 days ago | IN | 0 ETH | 0.00086628 | ||||
Withdraw | 17618217 | 386 days ago | IN | 0 ETH | 0.00034416 | ||||
Withdraw | 17208101 | 444 days ago | IN | 0 ETH | 0.00201985 | ||||
Claim Rewards | 16953107 | 480 days ago | IN | 0 ETH | 0.00056026 | ||||
Claim Rewards | 16892068 | 489 days ago | IN | 0 ETH | 0.00092709 | ||||
Withdraw | 16722035 | 513 days ago | IN | 0 ETH | 0.00084403 | ||||
Withdraw | 16585935 | 532 days ago | IN | 0 ETH | 0.00416199 | ||||
Withdraw | 16565960 | 534 days ago | IN | 0 ETH | 0.00059499 | ||||
Withdraw | 16565960 | 534 days ago | IN | 0 ETH | 0.00189304 | ||||
Deposit | 16565945 | 534 days ago | IN | 0 ETH | 0.0022647 | ||||
Claim Rewards | 16403910 | 557 days ago | IN | 0 ETH | 0.00178255 | ||||
Claim Rewards | 16379758 | 560 days ago | IN | 0 ETH | 0.00051728 | ||||
Withdraw | 16361421 | 563 days ago | IN | 0 ETH | 0.0017747 | ||||
Deposit | 16326074 | 568 days ago | IN | 0 ETH | 0.00294795 | ||||
Withdraw | 16326006 | 568 days ago | IN | 0 ETH | 0.00180288 | ||||
Claim Rewards | 16325999 | 568 days ago | IN | 0 ETH | 0.00148467 | ||||
Claim Rewards | 16325998 | 568 days ago | IN | 0 ETH | 0.00118452 | ||||
Claim Rewards | 16298996 | 572 days ago | IN | 0 ETH | 0.00109937 | ||||
Withdraw | 16298979 | 572 days ago | IN | 0 ETH | 0.00340697 | ||||
Claim Rewards | 16298973 | 572 days ago | IN | 0 ETH | 0.00258902 | ||||
Withdraw | 16295738 | 572 days ago | IN | 0 ETH | 0.00375523 | ||||
Claim Rewards | 16221402 | 583 days ago | IN | 0 ETH | 0.00061874 | ||||
Withdraw | 16221398 | 583 days ago | IN | 0 ETH | 0.00230495 | ||||
Withdraw | 16191330 | 587 days ago | IN | 0 ETH | 0.00340915 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
BeeposStaking
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.0; import "./Ownable.sol"; import "./Pausable.sol"; import "./IERC20.sol"; import "./IERC721.sol"; import "./ERC721Holder.sol"; import "./Math.sol"; import "./EnumerableSet.sol"; contract BeeposStaking is Ownable, ERC721Holder, Pausable { using EnumerableSet for EnumerableSet.UintSet; IERC721 public nftContractInstance; IERC20 public tokenContractInstance; // Number of tokens per block. There are approx 6k blocks per day and 10 tokens are represented by 10**18 (after considering decimals). uint256 public rate; // Mapping of address to token numbers deposited mapping(address => EnumerableSet.UintSet) private _deposits; // Mapping of address -> token -> block number mapping(address => mapping(uint256 => uint256)) public _depositBlocks; constructor(address nftContractAddress, uint256 initialRate, address tokenAddress) { nftContractInstance = IERC721(nftContractAddress); rate = initialRate; tokenContractInstance = IERC20(tokenAddress); } function setAddresses(address nftContractAddress, address tokenAddress) public onlyOwner { nftContractInstance = IERC721(nftContractAddress); tokenContractInstance = IERC20(tokenAddress); } function setRate(uint256 newRate) public onlyOwner { rate = newRate; } function pause() public onlyOwner { _pause(); } function unpause() public onlyOwner { _unpause(); } function depositsOf(address owner) external view returns (uint256[] memory) { EnumerableSet.UintSet storage depositSet = _deposits[owner]; uint256[] memory tokenIds = new uint256[](depositSet.length()); for (uint256 i; i < depositSet.length(); i++) { tokenIds[i] = depositSet.at(i); } return tokenIds; } function hasDeposits(address owner, uint256[] memory tokenIds) external view returns (bool) { EnumerableSet.UintSet storage depositSet = _deposits[owner]; for (uint256 i = 0; i < tokenIds.length; i++) { if (! depositSet.contains(tokenIds[i])) { return false; } } return true; } function hasDepositsOrOwns(address owner, uint256[] memory tokenIds) external view returns (bool) { EnumerableSet.UintSet storage depositSet = _deposits[owner]; for (uint256 i = 0; i < tokenIds.length; i++) { if (! depositSet.contains(tokenIds[i]) && nftContractInstance.ownerOf(tokenIds[i]) != owner) { return false; } } return true; } function calculateRewards(address owner, uint256[] memory tokenIds) external view returns (uint256) { uint256 reward = 0; for (uint256 i; i < tokenIds.length; i++) { reward += calculateReward(owner, tokenIds[i]); } return reward; } function calculateReward(address owner, uint256 tokenId) public view returns (uint256) { require(block.number >= _depositBlocks[owner][tokenId], "Invalid block numbers"); return rate * (_deposits[owner].contains(tokenId) ? 1 : 0) * (block.number - _depositBlocks[owner][tokenId]); } function claimRewards(uint256[] calldata tokenIds) public whenNotPaused { uint256 reward = 0; uint256 currentBlock = block.number; for (uint256 i; i < tokenIds.length; i++) { reward += calculateReward(msg.sender, tokenIds[i]); _depositBlocks[msg.sender][tokenIds[i]] = currentBlock; } if (reward > 0) { tokenContractInstance.transfer(msg.sender, reward); } } function deposit(uint256[] calldata tokenIds) external whenNotPaused { require(msg.sender != address(nftContractInstance), "Invalid address"); uint256 currentBlock = block.number; for (uint256 i = 0; i < tokenIds.length; i++) { nftContractInstance.safeTransferFrom(msg.sender, address(this), tokenIds[i], ""); _deposits[msg.sender].add(tokenIds[i]); _depositBlocks[msg.sender][tokenIds[i]] = currentBlock; } } function withdraw(uint256[] calldata tokenIds) external whenNotPaused { claimRewards(tokenIds); for (uint256 i; i < tokenIds.length; i++) { require(_deposits[msg.sender].contains(tokenIds[i]), "This token has not been deposited"); _deposits[msg.sender].remove(tokenIds[i]); nftContractInstance.safeTransferFrom(address(this), msg.sender, tokenIds[i], ""); } } function withdrawTokens(uint256 tokenAmount) external onlyOwner { tokenContractInstance.transfer(msg.sender, tokenAmount); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Library for managing * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive * types. * * Sets have the following properties: * * - Elements are added, removed, and checked for existence in constant time * (O(1)). * - Elements are enumerated in O(n). No guarantees are made on the ordering. * * ``` * contract Example { * // Add the library methods * using EnumerableSet for EnumerableSet.AddressSet; * * // Declare a set state variable * EnumerableSet.AddressSet private mySet; * } * ``` * * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`) * and `uint256` (`UintSet`) are supported. */ library EnumerableSet { // To implement this library for multiple types with as little code // repetition as possible, we write it in terms of a generic Set type with // bytes32 values. // The Set implementation uses private functions, and user-facing // implementations (such as AddressSet) are just wrappers around the // underlying Set. // This means that we can only create new EnumerableSets for types that fit // in bytes32. struct Set { // Storage of set values bytes32[] _values; // Position of the value in the `values` array, plus 1 because index 0 // means a value is not in the set. mapping (bytes32 => uint256) _indexes; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function _add(Set storage set, bytes32 value) private returns (bool) { if (!_contains(set, value)) { set._values.push(value); // The value is stored at length-1, but we add 1 to all indexes // and use 0 as a sentinel value set._indexes[value] = set._values.length; return true; } else { return false; } } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function _remove(Set storage set, bytes32 value) private returns (bool) { // We read and store the value's index to prevent multiple reads from the same storage slot uint256 valueIndex = set._indexes[value]; if (valueIndex != 0) { // Equivalent to contains(set, value) // To delete an element from the _values array in O(1), we swap the element to delete with the last one in // the array, and then remove the last element (sometimes called as 'swap and pop'). // This modifies the order of the array, as noted in {at}. uint256 toDeleteIndex = valueIndex - 1; uint256 lastIndex = set._values.length - 1; // When the value to delete is the last one, the swap operation is unnecessary. However, since this occurs // so rarely, we still do the swap anyway to avoid the gas cost of adding an 'if' statement. bytes32 lastvalue = set._values[lastIndex]; // Move the last value to the index where the value to delete is set._values[toDeleteIndex] = lastvalue; // Update the index for the moved value set._indexes[lastvalue] = valueIndex; // Replace lastvalue's index to valueIndex // Delete the slot where the moved value was stored set._values.pop(); // Delete the index for the deleted slot delete set._indexes[value]; return true; } else { return false; } } /** * @dev Returns true if the value is in the set. O(1). */ function _contains(Set storage set, bytes32 value) private view returns (bool) { return set._indexes[value] != 0; } /** * @dev Returns the number of values on the set. O(1). */ function _length(Set storage set) private view returns (uint256) { return set._values.length; } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function _at(Set storage set, uint256 index) private view returns (bytes32) { require(set._values.length > index, "EnumerableSet: index out of bounds"); return set._values[index]; } // Bytes32Set struct Bytes32Set { Set _inner; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function add(Bytes32Set storage set, bytes32 value) internal returns (bool) { return _add(set._inner, value); } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) { return _remove(set._inner, value); } /** * @dev Returns true if the value is in the set. O(1). */ function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) { return _contains(set._inner, value); } /** * @dev Returns the number of values in the set. O(1). */ function length(Bytes32Set storage set) internal view returns (uint256) { return _length(set._inner); } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) { return _at(set._inner, index); } // AddressSet struct AddressSet { Set _inner; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function add(AddressSet storage set, address value) internal returns (bool) { return _add(set._inner, bytes32(uint256(uint160(value)))); } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function remove(AddressSet storage set, address value) internal returns (bool) { return _remove(set._inner, bytes32(uint256(uint160(value)))); } /** * @dev Returns true if the value is in the set. O(1). */ function contains(AddressSet storage set, address value) internal view returns (bool) { return _contains(set._inner, bytes32(uint256(uint160(value)))); } /** * @dev Returns the number of values in the set. O(1). */ function length(AddressSet storage set) internal view returns (uint256) { return _length(set._inner); } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function at(AddressSet storage set, uint256 index) internal view returns (address) { return address(uint160(uint256(_at(set._inner, index)))); } // UintSet struct UintSet { Set _inner; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function add(UintSet storage set, uint256 value) internal returns (bool) { return _add(set._inner, bytes32(value)); } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function remove(UintSet storage set, uint256 value) internal returns (bool) { return _remove(set._inner, bytes32(value)); } /** * @dev Returns true if the value is in the set. O(1). */ function contains(UintSet storage set, uint256 value) internal view returns (bool) { return _contains(set._inner, bytes32(value)); } /** * @dev Returns the number of values on the set. O(1). */ function length(UintSet storage set) internal view returns (uint256) { return _length(set._inner); } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function at(UintSet storage set, uint256 index) internal view returns (uint256) { return uint256(_at(set._inner, index)); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IERC721Receiver.sol"; /** * @dev Implementation of the {IERC721Receiver} interface. * * Accepts all token transfers. * Make sure the contract is able to use its token with {IERC721-safeTransferFrom}, {IERC721-approve} or {IERC721-setApprovalForAll}. */ contract ERC721Holder is IERC721Receiver { /** * @dev See {IERC721Receiver-onERC721Received}. * * Always returns `IERC721Receiver.onERC721Received.selector`. */ function onERC721Received(address, address, uint256, bytes memory) public virtual override returns (bytes4) { return this.onERC721Received.selector; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IERC165.sol"; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom(address from, address to, uint256 tokenId) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 tokenId) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Standard math utilities missing in the Solidity language. */ library Math { /** * @dev Returns the largest of two numbers. */ function max(uint256 a, uint256 b) internal pure returns (uint256) { return a >= b ? a : b; } /** * @dev Returns the smallest of two numbers. */ function min(uint256 a, uint256 b) internal pure returns (uint256) { return a < b ? a : b; } /** * @dev Returns the average of two numbers. The result is rounded towards * zero. */ function average(uint256 a, uint256 b) internal pure returns (uint256) { // (a + b) / 2 can overflow, so we distribute return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./Context.sol"; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor () { _paused = false; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { require(!paused(), "Pausable: paused"); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { require(paused(), "Pausable: not paused"); _; } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"nftContractAddress","type":"address"},{"internalType":"uint256","name":"initialRate","type":"uint256"},{"internalType":"address","name":"tokenAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"_depositBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"calculateReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"calculateRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"depositsOf","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"hasDeposits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"hasDepositsOrOwns","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftContractInstance","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"nftContractAddress","type":"address"},{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"setAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newRate","type":"uint256"}],"name":"setRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenContractInstance","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162001928380380620019288339810160408190526200003491620000f0565b600062000040620000cf565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000805460ff60a01b19169055600180546001600160a01b039485166001600160a01b0319918216179091556003929092556002805491909316911617905562000130565b3390565b80516001600160a01b0381168114620000eb57600080fd5b919050565b60008060006060848603121562000105578283fd5b6200011084620000d3565b9250602084015191506200012760408501620000d3565b90509250925092565b6117e880620001406000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c8063715018a6116100b8578063983d95ce1161007c578063983d95ce14610269578063abb91ef51461027c578063b343ae141461028f578063e3a9db1a146102a2578063ef7d7de5146102c2578063f2fde38b146102ca57610142565b8063715018a6146102295780638456cb59146102315780638da5cb5b1461023957806390107afe1461024e57806391db9d341461026157610142565b806334fcf4371161010a57806334fcf437146101c05780633f4ba83a146101d35780634fb9c7c9146101db578063598b8e71146101fb5780635c975abb1461020e5780635eac62391461021657610142565b8063068c526f14610147578063150b7a02146101705780631852e8d9146101905780632c4e722e146101a3578063315a095d146101ab575b600080fd5b61015a6101553660046112d2565b6102dd565b60405161016791906116d2565b60405180910390f35b61018361017e366004611216565b610344565b604051610167919061150f565b61015a61019e36600461138e565b610354565b61015a61041f565b6101be6101b9366004611448565b610425565b005b6101be6101ce366004611448565b6104ec565b6101be610530565b6101ee6101e93660046112d2565b610579565b6040516101679190611504565b6101be6102093660046113b9565b6106c4565b6101ee61084f565b6101be6102243660046113b9565b61085f565b6101be6109be565b6101be610a47565b610241610a8e565b6040516101679190611460565b6101be61025c3660046111de565b610a9d565b610241610b0a565b6101be6102773660046113b9565b610b19565b6101ee61028a3660046112d2565b610c94565b61015a61029d36600461138e565b610cfb565b6102b56102b03660046111a6565b610d18565b60405161016791906114c0565b610241610df0565b6101be6102d83660046111a6565b610dff565b600080805b835181101561033a5761031c8585838151811061030f57634e487b7160e01b600052603260045260246000fd5b6020026020010151610354565b6103269083611705565b91508061033281611753565b9150506102e2565b5090505b92915050565b630a85bd0160e11b949350505050565b6001600160a01b03821660009081526005602090815260408083208484529091528120544310156103a05760405162461bcd60e51b8152600401610397906116a3565b60405180910390fd5b6001600160a01b03831660009081526005602090815260408083208584529091529020546103ce904361173c565b6001600160a01b03841660009081526004602052604090206103f09084610ebf565b6103fb5760006103fe565b60015b60ff1660035461040e919061171d565b610418919061171d565b9392505050565b60035481565b61042d610ecb565b6001600160a01b031661043e610a8e565b6001600160a01b0316146104645760405162461bcd60e51b81526004016103979061166e565b60025460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb9061049690339085906004016114a7565b602060405180830381600087803b1580156104b057600080fd5b505af11580156104c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e89190611428565b5050565b6104f4610ecb565b6001600160a01b0316610505610a8e565b6001600160a01b03161461052b5760405162461bcd60e51b81526004016103979061166e565b600355565b610538610ecb565b6001600160a01b0316610549610a8e565b6001600160a01b03161461056f5760405162461bcd60e51b81526004016103979061166e565b610577610ecf565b565b6001600160a01b0382166000908152600460205260408120815b83518110156106b9576105d68482815181106105bf57634e487b7160e01b600052603260045260246000fd5b602002602001015183610ebf90919063ffffffff16565b158015610697575060015484516001600160a01b03808816921690636352211e9087908590811061061757634e487b7160e01b600052603260045260246000fd5b60200260200101516040518263ffffffff1660e01b815260040161063b91906116d2565b60206040518083038186803b15801561065357600080fd5b505afa158015610667573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068b91906111c2565b6001600160a01b031614155b156106a75760009250505061033e565b806106b181611753565b915050610593565b506001949350505050565b6106cc61084f565b156106e95760405162461bcd60e51b815260040161039790611644565b6001546001600160a01b03163314156107145760405162461bcd60e51b815260040161039790611594565b4360005b82811015610849576001546001600160a01b031663b88d4fde333087878681811061075357634e487b7160e01b600052603260045260246000fd5b905060200201356040518463ffffffff1660e01b815260040161077893929190611474565b600060405180830381600087803b15801561079257600080fd5b505af11580156107a6573d6000803e3d6000fd5b505050506107eb8484838181106107cd57634e487b7160e01b600052603260045260246000fd5b33600090815260046020908152604090912093910201359050610f40565b50336000908152600560205260408120839186868581811061081d57634e487b7160e01b600052603260045260246000fd5b90506020020135815260200190815260200160002081905550808061084190611753565b915050610718565b50505050565b600054600160a01b900460ff1690565b61086761084f565b156108845760405162461bcd60e51b815260040161039790611644565b600043815b8381101561092c576108c1338686848181106108b557634e487b7160e01b600052603260045260246000fd5b90506020020135610354565b6108cb9084611705565b33600090815260056020526040812091945083919087878581811061090057634e487b7160e01b600052603260045260246000fd5b90506020020135815260200190815260200160002081905550808061092490611753565b915050610889565b5081156108495760025460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb9061096590339086906004016114a7565b602060405180830381600087803b15801561097f57600080fd5b505af1158015610993573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b79190611428565b5050505050565b6109c6610ecb565b6001600160a01b03166109d7610a8e565b6001600160a01b0316146109fd5760405162461bcd60e51b81526004016103979061166e565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b610a4f610ecb565b6001600160a01b0316610a60610a8e565b6001600160a01b031614610a865760405162461bcd60e51b81526004016103979061166e565b610577610f4c565b6000546001600160a01b031690565b610aa5610ecb565b6001600160a01b0316610ab6610a8e565b6001600160a01b031614610adc5760405162461bcd60e51b81526004016103979061166e565b600180546001600160a01b039384166001600160a01b03199182161790915560028054929093169116179055565b6001546001600160a01b031681565b610b2161084f565b15610b3e5760405162461bcd60e51b815260040161039790611644565b610b48828261085f565b60005b81811015610c8f57610b94838383818110610b7657634e487b7160e01b600052603260045260246000fd5b33600090815260046020908152604090912093910201359050610ebf565b610bb05760405162461bcd60e51b815260040161039790611603565b610bf1838383818110610bd357634e487b7160e01b600052603260045260246000fd5b33600090815260046020908152604090912093910201359050610fad565b506001546001600160a01b031663b88d4fde3033868686818110610c2557634e487b7160e01b600052603260045260246000fd5b905060200201356040518463ffffffff1660e01b8152600401610c4a93929190611474565b600060405180830381600087803b158015610c6457600080fd5b505af1158015610c78573d6000803e3d6000fd5b505050508080610c8790611753565b915050610b4b565b505050565b6001600160a01b0382166000908152600460205260408120815b83518110156106b957610cda8482815181106105bf57634e487b7160e01b600052603260045260246000fd5b610ce95760009250505061033e565b80610cf381611753565b915050610cae565b600560209081526000928352604080842090915290825290205481565b6001600160a01b0381166000908152600460205260408120606091610d3c82610fb9565b67ffffffffffffffff811115610d6257634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610d8b578160200160208202803683370190505b50905060005b610d9a83610fb9565b811015610de857610dab8382610fc4565b828281518110610dcb57634e487b7160e01b600052603260045260246000fd5b602090810291909101015280610de081611753565b915050610d91565b509392505050565b6002546001600160a01b031681565b610e07610ecb565b6001600160a01b0316610e18610a8e565b6001600160a01b031614610e3e5760405162461bcd60e51b81526004016103979061166e565b6001600160a01b038116610e645760405162461bcd60e51b8152600401610397906115bd565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006104188383610fd0565b3390565b610ed761084f565b610ef35760405162461bcd60e51b815260040161039790611566565b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610f29610ecb565b604051610f369190611460565b60405180910390a1565b60006104188383610fe8565b610f5461084f565b15610f715760405162461bcd60e51b815260040161039790611644565b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610f29610ecb565b60006104188383611032565b600061033e82611149565b6000610418838361114d565b60009081526001919091016020526040902054151590565b6000610ff48383610fd0565b61102a5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561033e565b50600061033e565b6000818152600183016020526040812054801561113f57600061105660018361173c565b855490915060009061106a9060019061173c565b9050600086600001828154811061109157634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050808760000184815481106110c257634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101929092558281526001890190915260409020849055865487908061110357634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905586600101600087815260200190815260200160002060009055600194505050505061033e565b600091505061033e565b5490565b815460009082106111705760405162461bcd60e51b815260040161039790611524565b82600001828154811061119357634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b6000602082840312156111b7578081fd5b81356104188161179a565b6000602082840312156111d3578081fd5b81516104188161179a565b600080604083850312156111f0578081fd5b82356111fb8161179a565b9150602083013561120b8161179a565b809150509250929050565b6000806000806080858703121561122b578182fd5b84356112368161179a565b93506020858101356112478161179a565b935060408601359250606086013567ffffffffffffffff8082111561126a578384fd5b818801915088601f83011261127d578384fd5b81358181111561128f5761128f611784565b6112a1601f8201601f191685016116db565b915080825289848285010111156112b6578485fd5b8084840185840137810190920192909252939692955090935050565b600080604083850312156112e4578182fd5b82356112ef8161179a565b915060208381013567ffffffffffffffff8082111561130c578384fd5b818601915086601f83011261131f578384fd5b81358181111561133157611331611784565b83810291506113418483016116db565b8181528481019084860184860187018b101561135b578788fd5b8795505b8386101561137d57803583526001959095019491860191860161135f565b508096505050505050509250929050565b600080604083850312156113a0578182fd5b82356113ab8161179a565b946020939093013593505050565b600080602083850312156113cb578182fd5b823567ffffffffffffffff808211156113e2578384fd5b818501915085601f8301126113f5578384fd5b813581811115611403578485fd5b8660208083028501011115611416578485fd5b60209290920196919550909350505050565b600060208284031215611439578081fd5b81518015158114610418578182fd5b600060208284031215611459578081fd5b5035919050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260806060820181905260009082015260a00190565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b818110156114f8578351835292840192918401916001016114dc565b50909695505050505050565b901515815260200190565b6001600160e01b031991909116815260200190565b60208082526022908201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e604082015261647360f01b606082015260800190565b60208082526014908201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604082015260600190565b6020808252600f908201526e496e76616c6964206164647265737360881b604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526021908201527f5468697320746f6b656e20686173206e6f74206265656e206465706f736974656040820152601960fa1b606082015260800190565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b602080825260159082015274496e76616c696420626c6f636b206e756d6265727360581b604082015260600190565b90815260200190565b60405181810167ffffffffffffffff811182821017156116fd576116fd611784565b604052919050565b600082198211156117185761171861176e565b500190565b60008160001904831182151516156117375761173761176e565b500290565b60008282101561174e5761174e61176e565b500390565b60006000198214156117675761176761176e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146117af57600080fd5b5056fea264697066735822122093881e3fb8827fe3fa9012748366b171028ada7990cc3dbbd7fe6a9a7d7e0eb464736f6c63430008000033000000000000000000000000b1093f00dff1cbad4709ba7ce82c3dc9ad839c360000000000000000000000000000000000000000000000000005ebd312a02acc0000000000000000000000007894e4102bcc33f5dc5ac514344950e52594bac9
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101425760003560e01c8063715018a6116100b8578063983d95ce1161007c578063983d95ce14610269578063abb91ef51461027c578063b343ae141461028f578063e3a9db1a146102a2578063ef7d7de5146102c2578063f2fde38b146102ca57610142565b8063715018a6146102295780638456cb59146102315780638da5cb5b1461023957806390107afe1461024e57806391db9d341461026157610142565b806334fcf4371161010a57806334fcf437146101c05780633f4ba83a146101d35780634fb9c7c9146101db578063598b8e71146101fb5780635c975abb1461020e5780635eac62391461021657610142565b8063068c526f14610147578063150b7a02146101705780631852e8d9146101905780632c4e722e146101a3578063315a095d146101ab575b600080fd5b61015a6101553660046112d2565b6102dd565b60405161016791906116d2565b60405180910390f35b61018361017e366004611216565b610344565b604051610167919061150f565b61015a61019e36600461138e565b610354565b61015a61041f565b6101be6101b9366004611448565b610425565b005b6101be6101ce366004611448565b6104ec565b6101be610530565b6101ee6101e93660046112d2565b610579565b6040516101679190611504565b6101be6102093660046113b9565b6106c4565b6101ee61084f565b6101be6102243660046113b9565b61085f565b6101be6109be565b6101be610a47565b610241610a8e565b6040516101679190611460565b6101be61025c3660046111de565b610a9d565b610241610b0a565b6101be6102773660046113b9565b610b19565b6101ee61028a3660046112d2565b610c94565b61015a61029d36600461138e565b610cfb565b6102b56102b03660046111a6565b610d18565b60405161016791906114c0565b610241610df0565b6101be6102d83660046111a6565b610dff565b600080805b835181101561033a5761031c8585838151811061030f57634e487b7160e01b600052603260045260246000fd5b6020026020010151610354565b6103269083611705565b91508061033281611753565b9150506102e2565b5090505b92915050565b630a85bd0160e11b949350505050565b6001600160a01b03821660009081526005602090815260408083208484529091528120544310156103a05760405162461bcd60e51b8152600401610397906116a3565b60405180910390fd5b6001600160a01b03831660009081526005602090815260408083208584529091529020546103ce904361173c565b6001600160a01b03841660009081526004602052604090206103f09084610ebf565b6103fb5760006103fe565b60015b60ff1660035461040e919061171d565b610418919061171d565b9392505050565b60035481565b61042d610ecb565b6001600160a01b031661043e610a8e565b6001600160a01b0316146104645760405162461bcd60e51b81526004016103979061166e565b60025460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb9061049690339085906004016114a7565b602060405180830381600087803b1580156104b057600080fd5b505af11580156104c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e89190611428565b5050565b6104f4610ecb565b6001600160a01b0316610505610a8e565b6001600160a01b03161461052b5760405162461bcd60e51b81526004016103979061166e565b600355565b610538610ecb565b6001600160a01b0316610549610a8e565b6001600160a01b03161461056f5760405162461bcd60e51b81526004016103979061166e565b610577610ecf565b565b6001600160a01b0382166000908152600460205260408120815b83518110156106b9576105d68482815181106105bf57634e487b7160e01b600052603260045260246000fd5b602002602001015183610ebf90919063ffffffff16565b158015610697575060015484516001600160a01b03808816921690636352211e9087908590811061061757634e487b7160e01b600052603260045260246000fd5b60200260200101516040518263ffffffff1660e01b815260040161063b91906116d2565b60206040518083038186803b15801561065357600080fd5b505afa158015610667573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068b91906111c2565b6001600160a01b031614155b156106a75760009250505061033e565b806106b181611753565b915050610593565b506001949350505050565b6106cc61084f565b156106e95760405162461bcd60e51b815260040161039790611644565b6001546001600160a01b03163314156107145760405162461bcd60e51b815260040161039790611594565b4360005b82811015610849576001546001600160a01b031663b88d4fde333087878681811061075357634e487b7160e01b600052603260045260246000fd5b905060200201356040518463ffffffff1660e01b815260040161077893929190611474565b600060405180830381600087803b15801561079257600080fd5b505af11580156107a6573d6000803e3d6000fd5b505050506107eb8484838181106107cd57634e487b7160e01b600052603260045260246000fd5b33600090815260046020908152604090912093910201359050610f40565b50336000908152600560205260408120839186868581811061081d57634e487b7160e01b600052603260045260246000fd5b90506020020135815260200190815260200160002081905550808061084190611753565b915050610718565b50505050565b600054600160a01b900460ff1690565b61086761084f565b156108845760405162461bcd60e51b815260040161039790611644565b600043815b8381101561092c576108c1338686848181106108b557634e487b7160e01b600052603260045260246000fd5b90506020020135610354565b6108cb9084611705565b33600090815260056020526040812091945083919087878581811061090057634e487b7160e01b600052603260045260246000fd5b90506020020135815260200190815260200160002081905550808061092490611753565b915050610889565b5081156108495760025460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb9061096590339086906004016114a7565b602060405180830381600087803b15801561097f57600080fd5b505af1158015610993573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b79190611428565b5050505050565b6109c6610ecb565b6001600160a01b03166109d7610a8e565b6001600160a01b0316146109fd5760405162461bcd60e51b81526004016103979061166e565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b610a4f610ecb565b6001600160a01b0316610a60610a8e565b6001600160a01b031614610a865760405162461bcd60e51b81526004016103979061166e565b610577610f4c565b6000546001600160a01b031690565b610aa5610ecb565b6001600160a01b0316610ab6610a8e565b6001600160a01b031614610adc5760405162461bcd60e51b81526004016103979061166e565b600180546001600160a01b039384166001600160a01b03199182161790915560028054929093169116179055565b6001546001600160a01b031681565b610b2161084f565b15610b3e5760405162461bcd60e51b815260040161039790611644565b610b48828261085f565b60005b81811015610c8f57610b94838383818110610b7657634e487b7160e01b600052603260045260246000fd5b33600090815260046020908152604090912093910201359050610ebf565b610bb05760405162461bcd60e51b815260040161039790611603565b610bf1838383818110610bd357634e487b7160e01b600052603260045260246000fd5b33600090815260046020908152604090912093910201359050610fad565b506001546001600160a01b031663b88d4fde3033868686818110610c2557634e487b7160e01b600052603260045260246000fd5b905060200201356040518463ffffffff1660e01b8152600401610c4a93929190611474565b600060405180830381600087803b158015610c6457600080fd5b505af1158015610c78573d6000803e3d6000fd5b505050508080610c8790611753565b915050610b4b565b505050565b6001600160a01b0382166000908152600460205260408120815b83518110156106b957610cda8482815181106105bf57634e487b7160e01b600052603260045260246000fd5b610ce95760009250505061033e565b80610cf381611753565b915050610cae565b600560209081526000928352604080842090915290825290205481565b6001600160a01b0381166000908152600460205260408120606091610d3c82610fb9565b67ffffffffffffffff811115610d6257634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610d8b578160200160208202803683370190505b50905060005b610d9a83610fb9565b811015610de857610dab8382610fc4565b828281518110610dcb57634e487b7160e01b600052603260045260246000fd5b602090810291909101015280610de081611753565b915050610d91565b509392505050565b6002546001600160a01b031681565b610e07610ecb565b6001600160a01b0316610e18610a8e565b6001600160a01b031614610e3e5760405162461bcd60e51b81526004016103979061166e565b6001600160a01b038116610e645760405162461bcd60e51b8152600401610397906115bd565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006104188383610fd0565b3390565b610ed761084f565b610ef35760405162461bcd60e51b815260040161039790611566565b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610f29610ecb565b604051610f369190611460565b60405180910390a1565b60006104188383610fe8565b610f5461084f565b15610f715760405162461bcd60e51b815260040161039790611644565b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610f29610ecb565b60006104188383611032565b600061033e82611149565b6000610418838361114d565b60009081526001919091016020526040902054151590565b6000610ff48383610fd0565b61102a5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561033e565b50600061033e565b6000818152600183016020526040812054801561113f57600061105660018361173c565b855490915060009061106a9060019061173c565b9050600086600001828154811061109157634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050808760000184815481106110c257634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101929092558281526001890190915260409020849055865487908061110357634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905586600101600087815260200190815260200160002060009055600194505050505061033e565b600091505061033e565b5490565b815460009082106111705760405162461bcd60e51b815260040161039790611524565b82600001828154811061119357634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b6000602082840312156111b7578081fd5b81356104188161179a565b6000602082840312156111d3578081fd5b81516104188161179a565b600080604083850312156111f0578081fd5b82356111fb8161179a565b9150602083013561120b8161179a565b809150509250929050565b6000806000806080858703121561122b578182fd5b84356112368161179a565b93506020858101356112478161179a565b935060408601359250606086013567ffffffffffffffff8082111561126a578384fd5b818801915088601f83011261127d578384fd5b81358181111561128f5761128f611784565b6112a1601f8201601f191685016116db565b915080825289848285010111156112b6578485fd5b8084840185840137810190920192909252939692955090935050565b600080604083850312156112e4578182fd5b82356112ef8161179a565b915060208381013567ffffffffffffffff8082111561130c578384fd5b818601915086601f83011261131f578384fd5b81358181111561133157611331611784565b83810291506113418483016116db565b8181528481019084860184860187018b101561135b578788fd5b8795505b8386101561137d57803583526001959095019491860191860161135f565b508096505050505050509250929050565b600080604083850312156113a0578182fd5b82356113ab8161179a565b946020939093013593505050565b600080602083850312156113cb578182fd5b823567ffffffffffffffff808211156113e2578384fd5b818501915085601f8301126113f5578384fd5b813581811115611403578485fd5b8660208083028501011115611416578485fd5b60209290920196919550909350505050565b600060208284031215611439578081fd5b81518015158114610418578182fd5b600060208284031215611459578081fd5b5035919050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260806060820181905260009082015260a00190565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b818110156114f8578351835292840192918401916001016114dc565b50909695505050505050565b901515815260200190565b6001600160e01b031991909116815260200190565b60208082526022908201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e604082015261647360f01b606082015260800190565b60208082526014908201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604082015260600190565b6020808252600f908201526e496e76616c6964206164647265737360881b604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526021908201527f5468697320746f6b656e20686173206e6f74206265656e206465706f736974656040820152601960fa1b606082015260800190565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b602080825260159082015274496e76616c696420626c6f636b206e756d6265727360581b604082015260600190565b90815260200190565b60405181810167ffffffffffffffff811182821017156116fd576116fd611784565b604052919050565b600082198211156117185761171861176e565b500190565b60008160001904831182151516156117375761173761176e565b500290565b60008282101561174e5761174e61176e565b500390565b60006000198214156117675761176761176e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146117af57600080fd5b5056fea264697066735822122093881e3fb8827fe3fa9012748366b171028ada7990cc3dbbd7fe6a9a7d7e0eb464736f6c63430008000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b1093f00dff1cbad4709ba7ce82c3dc9ad839c360000000000000000000000000000000000000000000000000005ebd312a02acc0000000000000000000000007894e4102bcc33f5dc5ac514344950e52594bac9
-----Decoded View---------------
Arg [0] : nftContractAddress (address): 0xb1093F00dfF1CBaD4709bA7cE82c3dC9aD839c36
Arg [1] : initialRate (uint256): 1666666666666700
Arg [2] : tokenAddress (address): 0x7894e4102Bcc33F5dc5ac514344950e52594bAc9
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000b1093f00dff1cbad4709ba7ce82c3dc9ad839c36
Arg [1] : 0000000000000000000000000000000000000000000000000005ebd312a02acc
Arg [2] : 0000000000000000000000007894e4102bcc33f5dc5ac514344950e52594bac9
Deployed Bytecode Sourcemap
254:4653:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2754:285;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;548:164:1;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3047:305:10:-;;;;;;:::i;:::-;;:::i;599:19::-;;;:::i;4766:138::-;;;;;;:::i;:::-;;:::i;:::-;;1344:84;;;;;;:::i;:::-;;:::i;1506:65::-;;;:::i;2324:422::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3829:489::-;;;;;;:::i;:::-;;:::i;1073:86:9:-;;;:::i;3361:460:10:-;;;;;;:::i;:::-;;:::i;1746:148:8:-;;;:::i;1437:61:10:-;;;:::i;1095:87:8:-;;;:::i;:::-;;;;;;;:::i;1124:212:10:-;;;;;;:::i;:::-;;:::i;373:34::-;;;:::i;4327:430::-;;;;;;:::i;:::-;;:::i;1955:361::-;;;;;;:::i;:::-;;:::i;802:69::-;;;;;;:::i;:::-;;:::i;1579:368::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;414:35::-;;;:::i;2049:244:8:-;;;;;;:::i;:::-;;:::i;2754:285:10:-;2845:7;;;2894:114;2914:8;:15;2910:1;:19;2894:114;;;2961:35;2977:5;2984:8;2993:1;2984:11;;;;;;-1:-1:-1;;;2984:11:10;;;;;;;;;;;;;;;2961:15;:35::i;:::-;2951:45;;;;:::i;:::-;;-1:-1:-1;2931:3:10;;;;:::i;:::-;;;;2894:114;;;-1:-1:-1;3025:6:10;-1:-1:-1;2754:285:10;;;;;:::o;548:164:1:-;-1:-1:-1;;;548:164:1;;;;;;:::o;3047:305:10:-;-1:-1:-1;;;;;3169:21:10;;3125:7;3169:21;;;:14;:21;;;;;;;;:30;;;;;;;;;3153:12;:46;;3145:80;;;;-1:-1:-1;;;3145:80:10;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;3313:21:10;;;;;;:14;:21;;;;;;;;:30;;;;;;;;;3298:45;;:12;:45;:::i;:::-;-1:-1:-1;;;;;3251:16:10;;;;;;:9;:16;;;;;:34;;3277:7;3251:25;:34::i;:::-;:42;;3292:1;3251:42;;;3288:1;3251:42;3243:51;;:4;;:51;;;;:::i;:::-;:101;;;;:::i;:::-;3236:108;3047:305;-1:-1:-1;;;3047:305:10:o;599:19::-;;;;:::o;4766:138::-;1326:12:8;:10;:12::i;:::-;-1:-1:-1;;;;;1315:23:8;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1315:23:8;;1307:68;;;;-1:-1:-1;;;1307:68:8;;;;;;;:::i;:::-;4841:21:10::1;::::0;:55:::1;::::0;-1:-1:-1;;;4841:55:10;;-1:-1:-1;;;;;4841:21:10;;::::1;::::0;:30:::1;::::0;:55:::1;::::0;4872:10:::1;::::0;4884:11;;4841:55:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4766:138:::0;:::o;1344:84::-;1326:12:8;:10;:12::i;:::-;-1:-1:-1;;;;;1315:23:8;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1315:23:8;;1307:68;;;;-1:-1:-1;;;1307:68:8;;;;;;;:::i;:::-;1406:4:10::1;:14:::0;1344:84::o;1506:65::-;1326:12:8;:10;:12::i;:::-;-1:-1:-1;;;;;1315:23:8;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1315:23:8;;1307:68;;;;-1:-1:-1;;;1307:68:8;;;;;;;:::i;:::-;1553:10:10::1;:8;:10::i;:::-;1506:65::o:0;2324:422::-;-1:-1:-1;;;;;2476:16:10;;2416:4;2476:16;;;:9;:16;;;;;2416:4;2503:212;2527:8;:15;2523:1;:19;2503:212;;;2570:32;2590:8;2599:1;2590:11;;;;;;-1:-1:-1;;;2590:11:10;;;;;;;;;;;;;;;2570:10;:19;;:32;;;;:::i;:::-;2568:34;:87;;;;-1:-1:-1;2606:19:10;;2634:11;;-1:-1:-1;;;;;2606:49:10;;;;:19;;:27;;2634:8;;2643:1;;2634:11;;;;-1:-1:-1;;;2634:11:10;;;;;;;;;;;;;;;2606:40;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2606:49:10;;;2568:87;2564:140;;;2683:5;2676:12;;;;;;2564:140;2544:3;;;;:::i;:::-;;;;2503:212;;;-1:-1:-1;2734:4:10;;2324:422;-1:-1:-1;;;;2324:422:10:o;3829:489::-;1399:8:9;:6;:8::i;:::-;1398:9;1390:38;;;;-1:-1:-1;;;1390:38:9;;;;;;;:::i;:::-;3939:19:10::1;::::0;-1:-1:-1;;;;;3939:19:10::1;3917:10;:42;;3909:70;;;;-1:-1:-1::0;;;3909:70:10::1;;;;;;;:::i;:::-;4013:12;3990:20;4036:275;4056:19:::0;;::::1;4036:275;;;4097:19;::::0;-1:-1:-1;;;;;4097:19:10::1;:36;4134:10;4154:4;4161:8:::0;;4170:1;4161:11;;::::1;;;-1:-1:-1::0;;;4161:11:10::1;;;;;;;;;;;;;;;4097:80;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;4192:38;4218:8;;4227:1;4218:11;;;;;-1:-1:-1::0;;;4218:11:10::1;;;;;;;;;4202:10;4192:21;::::0;;;:9:::1;4218:11;4192:21:::0;;;;;;;;4218:11;::::1;;;::::0;-1:-1:-1;4192:25:10::1;:38::i;:::-;-1:-1:-1::0;4260:10:10::1;4245:26;::::0;;;:14:::1;:26;::::0;;;;4287:12;;4272:8;;4281:1;4272:11;;::::1;;;-1:-1:-1::0;;;4272:11:10::1;;;;;;;;;;;;;;;4245:39;;;;;;;;;;;:54;;;;4077:3;;;;;:::i;:::-;;;;4036:275;;;;1439:1:9;3829:489:10::0;;:::o;1073:86:9:-;1120:4;1144:7;-1:-1:-1;;;1144:7:9;;;;;1073:86::o;3361:460:10:-;1399:8:9;:6;:8::i;:::-;1398:9;1390:38;;;;-1:-1:-1;;;1390:38:9;;;;;;;:::i;:::-;3444:14:10::1;3496:12;3444:14:::0;3519:188:::1;3535:19:::0;;::::1;3519:188;;;3586:40;3602:10;3614:8;;3623:1;3614:11;;;;;-1:-1:-1::0;;;3614:11:10::1;;;;;;;;;;;;;;;3586:15;:40::i;:::-;3576:50;::::0;;::::1;:::i;:::-;3656:10;3641:26;::::0;;;:14:::1;:26;::::0;;;;3576:50;;-1:-1:-1;3683:12:10;;3641:26;3668:8;;3677:1;3668:11;;::::1;;;-1:-1:-1::0;;;3668:11:10::1;;;;;;;;;;;;;;;3641:39;;;;;;;;;;;:54;;;;3556:3;;;;;:::i;:::-;;;;3519:188;;;-1:-1:-1::0;3721:10:10;;3717:97:::1;;3752:21;::::0;:50:::1;::::0;-1:-1:-1;;;3752:50:10;;-1:-1:-1;;;;;3752:21:10;;::::1;::::0;:30:::1;::::0;:50:::1;::::0;3783:10:::1;::::0;3795:6;;3752:50:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1439:1:9;;3361:460:10::0;;:::o;1746:148:8:-;1326:12;:10;:12::i;:::-;-1:-1:-1;;;;;1315:23:8;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1315:23:8;;1307:68;;;;-1:-1:-1;;;1307:68:8;;;;;;;:::i;:::-;1853:1:::1;1837:6:::0;;1816:40:::1;::::0;-1:-1:-1;;;;;1837:6:8;;::::1;::::0;1816:40:::1;::::0;1853:1;;1816:40:::1;1884:1;1867:19:::0;;-1:-1:-1;;;;;;1867:19:8::1;::::0;;1746:148::o;1437:61:10:-;1326:12:8;:10;:12::i;:::-;-1:-1:-1;;;;;1315:23:8;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1315:23:8;;1307:68;;;;-1:-1:-1;;;1307:68:8;;;;;;;:::i;:::-;1482:8:10::1;:6;:8::i;1095:87:8:-:0;1141:7;1168:6;-1:-1:-1;;;;;1168:6:8;1095:87;:::o;1124:212:10:-;1326:12:8;:10;:12::i;:::-;-1:-1:-1;;;;;1315:23:8;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1315:23:8;;1307:68;;;;-1:-1:-1;;;1307:68:8;;;;;;;:::i;:::-;1224:19:10::1;:49:::0;;-1:-1:-1;;;;;1224:49:10;;::::1;-1:-1:-1::0;;;;;;1224:49:10;;::::1;;::::0;;;1284:21:::1;:44:::0;;;;;::::1;::::0;::::1;;::::0;;1124:212::o;373:34::-;;;-1:-1:-1;;;;;373:34:10;;:::o;4327:430::-;1399:8:9;:6;:8::i;:::-;1398:9;1390:38;;;;-1:-1:-1;;;1390:38:9;;;;;;;:::i;:::-;4408:22:10::1;4421:8;;4408:12;:22::i;:::-;4446:9;4441:309;4457:19:::0;;::::1;4441:309;;;4506:43;4537:8;;4546:1;4537:11;;;;;-1:-1:-1::0;;;4537:11:10::1;;;;;;;;;4516:10;4506:21;::::0;;;:9:::1;4537:11;4506:21:::0;;;;;;;;4537:11;::::1;;;::::0;-1:-1:-1;4506:30:10::1;:43::i;:::-;4498:89;;;;-1:-1:-1::0;;;4498:89:10::1;;;;;;;:::i;:::-;4602:41;4631:8;;4640:1;4631:11;;;;;-1:-1:-1::0;;;4631:11:10::1;;;;;;;;;4612:10;4602:21;::::0;;;:9:::1;4631:11;4602:21:::0;;;;;;;;4631:11;::::1;;;::::0;-1:-1:-1;4602:28:10::1;:41::i;:::-;-1:-1:-1::0;4658:19:10::1;::::0;-1:-1:-1;;;;;4658:19:10::1;:36;4703:4;4710:10;4722:8:::0;;4731:1;4722:11;;::::1;;;-1:-1:-1::0;;;4722:11:10::1;;;;;;;;;;;;;;;4658:80;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;4478:3;;;;;:::i;:::-;;;;4441:309;;;;4327:430:::0;;:::o;1955:361::-;-1:-1:-1;;;;;2101:16:10;;2041:4;2101:16;;;:9;:16;;;;;2041:4;2128:159;2152:8;:15;2148:1;:19;2128:159;;;2195:32;2215:8;2224:1;2215:11;;;;;;-1:-1:-1;;;2215:11:10;;;;;;;;2195:32;2189:87;;2255:5;2248:12;;;;;;2189:87;2169:3;;;;:::i;:::-;;;;2128:159;;802:69;;;;;;;;;;;;;;;;;;;;;;;;:::o;1579:368::-;-1:-1:-1;;;;;1709:16:10;;1666:40;1709:16;;;:9;:16;;;;;1637;;1778:19;1709:16;1778:17;:19::i;:::-;1764:34;;;;;;-1:-1:-1;;;1764:34:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1764:34:10;;1736:62;;1816:9;1811:103;1831:19;:10;:17;:19::i;:::-;1827:1;:23;1811:103;;;1886:16;:10;1900:1;1886:13;:16::i;:::-;1872:8;1881:1;1872:11;;;;;;-1:-1:-1;;;1872:11:10;;;;;;;;;;;;;;;;;;:30;1852:3;;;;:::i;:::-;;;;1811:103;;;-1:-1:-1;1931:8:10;1579:368;-1:-1:-1;;;1579:368:10:o;414:35::-;;;-1:-1:-1;;;;;414:35:10;;:::o;2049:244:8:-;1326:12;:10;:12::i;:::-;-1:-1:-1;;;;;1315:23:8;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1315:23:8;;1307:68;;;;-1:-1:-1;;;1307:68:8;;;;;;;:::i;:::-;-1:-1:-1;;;;;2138:22:8;::::1;2130:73;;;;-1:-1:-1::0;;;2130:73:8::1;;;;;;;:::i;:::-;2240:6;::::0;;2219:38:::1;::::0;-1:-1:-1;;;;;2219:38:8;;::::1;::::0;2240:6;::::1;::::0;2219:38:::1;::::0;::::1;2268:6;:17:::0;;-1:-1:-1;;;;;;2268:17:8::1;-1:-1:-1::0;;;;;2268:17:8;;;::::1;::::0;;;::::1;::::0;;2049:244::o;8854:146:2:-;8931:4;8955:37;8965:3;8985:5;8955:9;:37::i;601:98:0:-;681:10;601:98;:::o;2132:120:9:-;1676:8;:6;:8::i;:::-;1668:41;;;;-1:-1:-1;;;1668:41:9;;;;;;;:::i;:::-;2201:5:::1;2191:15:::0;;-1:-1:-1;;;;2191:15:9::1;::::0;;2222:22:::1;2231:12;:10;:12::i;:::-;2222:22;;;;;;:::i;:::-;;;;;;;;2132:120::o:0;8324:131:2:-;8391:4;8415:32;8420:3;8440:5;8415:4;:32::i;1873:118:9:-;1399:8;:6;:8::i;:::-;1398:9;1390:38;;;;-1:-1:-1;;;1390:38:9;;;;;;;:::i;:::-;1933:7:::1;:14:::0;;-1:-1:-1;;;;1933:14:9::1;-1:-1:-1::0;;;1933:14:9::1;::::0;;1963:20:::1;1970:12;:10;:12::i;8631:137:2:-:0;8701:4;8725:35;8733:3;8753:5;8725:7;:35::i;9086:114::-;9146:7;9173:19;9181:3;9173:7;:19::i;9544:137::-;9615:7;9650:22;9654:3;9666:5;9650:3;:22::i;3914:129::-;3987:4;4011:19;;;:12;;;;;:19;;;;;;:24;;;3914:129::o;1685:414::-;1748:4;1770:21;1780:3;1785:5;1770:9;:21::i;:::-;1765:327;;-1:-1:-1;1808:23:2;;;;;;;;:11;:23;;;;;;;;;;;;;1991:18;;1969:19;;;:12;;;:19;;;;;;:40;;;;2024:11;;1765:327;-1:-1:-1;2075:5:2;2068:12;;2275:1553;2341:4;2480:19;;;:12;;;:19;;;;;;2516:15;;2512:1309;;2878:21;2902:14;2915:1;2902:10;:14;:::i;:::-;2951:18;;2878:38;;-1:-1:-1;2931:17:2;;2951:22;;2972:1;;2951:22;:::i;:::-;2931:42;;3218:17;3238:3;:11;;3250:9;3238:22;;;;;;-1:-1:-1;;;3238:22:2;;;;;;;;;;;;;;;;;3218:42;;3384:9;3355:3;:11;;3367:13;3355:26;;;;;;-1:-1:-1;;;3355:26:2;;;;;;;;;;;;;;;;;;;;:38;;;;3461:23;;;:12;;;:23;;;;;;:36;;;3622:17;;3461:3;;3622:17;;;-1:-1:-1;;;3622:17:2;;;;;;;;;;;;;;;;;;;;;;;;;;3717:3;:12;;:19;3730:5;3717:19;;;;;;;;;;;3710:26;;;3760:4;3753:11;;;;;;;;2512:1309;3804:5;3797:12;;;;;4129:109;4212:18;;4129:109::o;4582:204::-;4677:18;;4649:7;;4677:26;-1:-1:-1;4669:73:2;;;;-1:-1:-1;;;4669:73:2;;;;;;;:::i;:::-;4760:3;:11;;4772:5;4760:18;;;;;;-1:-1:-1;;;4760:18:2;;;;;;;;;;;;;;;;;4753:25;;4582:204;;;;:::o;14:259:11:-;;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:33;237:5;210:33;:::i;278:263::-;;401:2;389:9;380:7;376:23;372:32;369:2;;;422:6;414;407:22;369:2;459:9;453:16;478:33;505:5;478:33;:::i;546:402::-;;;675:2;663:9;654:7;650:23;646:32;643:2;;;696:6;688;681:22;643:2;740:9;727:23;759:33;786:5;759:33;:::i;:::-;811:5;-1:-1:-1;868:2:11;853:18;;840:32;881:35;840:32;881:35;:::i;:::-;935:7;925:17;;;633:315;;;;;:::o;953:1156::-;;;;;1125:3;1113:9;1104:7;1100:23;1096:33;1093:2;;;1147:6;1139;1132:22;1093:2;1191:9;1178:23;1210:33;1237:5;1210:33;:::i;:::-;1262:5;-1:-1:-1;1286:2:11;1325:18;;;1312:32;1353:35;1312:32;1353:35;:::i;:::-;1407:7;-1:-1:-1;1461:2:11;1446:18;;1433:32;;-1:-1:-1;1516:2:11;1501:18;;1488:32;1539:18;1569:14;;;1566:2;;;1601:6;1593;1586:22;1566:2;1644:6;1633:9;1629:22;1619:32;;1689:7;1682:4;1678:2;1674:13;1670:27;1660:2;;1716:6;1708;1701:22;1660:2;1757;1744:16;1779:2;1775;1772:10;1769:2;;;1785:18;;:::i;:::-;1827:52;1869:2;1850:13;;-1:-1:-1;;1846:27:11;1842:36;;1827:52;:::i;:::-;1814:65;;1902:2;1895:5;1888:17;1942:7;1937:2;1932;1928;1924:11;1920:20;1917:33;1914:2;;;1968:6;1960;1953:22;1914:2;2028;2023;2019;2015:11;2010:2;2003:5;1999:14;1986:45;2051:14;;2047:23;;;2040:39;;;;1083:1026;;;;-1:-1:-1;1083:1026:11;;-1:-1:-1;;1083:1026:11:o;2114:1139::-;;;2268:2;2256:9;2247:7;2243:23;2239:32;2236:2;;;2289:6;2281;2274:22;2236:2;2333:9;2320:23;2352:33;2379:5;2352:33;:::i;:::-;2404:5;-1:-1:-1;2428:2:11;2466:18;;;2453:32;2504:18;2534:14;;;2531:2;;;2566:6;2558;2551:22;2531:2;2609:6;2598:9;2594:22;2584:32;;2654:7;2647:4;2643:2;2639:13;2635:27;2625:2;;2681:6;2673;2666:22;2625:2;2722;2709:16;2744:2;2740;2737:10;2734:2;;;2750:18;;:::i;:::-;2797:2;2793;2789:11;2779:21;;2820:27;2843:2;2839;2835:11;2820:27;:::i;:::-;2881:15;;;2912:12;;;;2944:11;;;2974;;;2970:20;;2967:33;-1:-1:-1;2964:2:11;;;3018:6;3010;3003:22;2964:2;3045:6;3036:15;;3060:163;3074:2;3071:1;3068:9;3060:163;;;3131:17;;3119:30;;3092:1;3085:9;;;;;3169:12;;;;3201;;3060:163;;;3064:3;3242:5;3232:15;;;;;;;;2226:1027;;;;;:::o;3258:327::-;;;3387:2;3375:9;3366:7;3362:23;3358:32;3355:2;;;3408:6;3400;3393:22;3355:2;3452:9;3439:23;3471:33;3498:5;3471:33;:::i;:::-;3523:5;3575:2;3560:18;;;;3547:32;;-1:-1:-1;;;3345:240:11:o;3590:666::-;;;3737:2;3725:9;3716:7;3712:23;3708:32;3705:2;;;3758:6;3750;3743:22;3705:2;3803:9;3790:23;3832:18;3873:2;3865:6;3862:14;3859:2;;;3894:6;3886;3879:22;3859:2;3937:6;3926:9;3922:22;3912:32;;3982:7;3975:4;3971:2;3967:13;3963:27;3953:2;;4009:6;4001;3994:22;3953:2;4054;4041:16;4080:2;4072:6;4069:14;4066:2;;;4101:6;4093;4086:22;4066:2;4160:7;4155:2;4149;4141:6;4137:15;4133:2;4129:24;4125:33;4122:46;4119:2;;;4186:6;4178;4171:22;4119:2;4222;4214:11;;;;;4244:6;;-1:-1:-1;3695:561:11;;-1:-1:-1;;;;3695:561:11:o;4261:297::-;;4381:2;4369:9;4360:7;4356:23;4352:32;4349:2;;;4402:6;4394;4387:22;4349:2;4439:9;4433:16;4492:5;4485:13;4478:21;4471:5;4468:32;4458:2;;4519:6;4511;4504:22;4563:190;;4675:2;4663:9;4654:7;4650:23;4646:32;4643:2;;;4696:6;4688;4681:22;4643:2;-1:-1:-1;4724:23:11;;4633:120;-1:-1:-1;4633:120:11:o;4758:203::-;-1:-1:-1;;;;;4922:32:11;;;;4904:51;;4892:2;4877:18;;4859:102::o;4966:558::-;-1:-1:-1;;;;;5289:15:11;;;5271:34;;5341:15;;;;5336:2;5321:18;;5314:43;5388:2;5373:18;;5366:34;;;;5436:3;5431:2;5416:18;;5409:31;;;4966:558;5456:19;;;5449:33;5251:3;5499:19;;5223:301::o;5529:274::-;-1:-1:-1;;;;;5721:32:11;;;;5703:51;;5785:2;5770:18;;5763:34;5691:2;5676:18;;5658:145::o;5808:635::-;5979:2;6031:21;;;6101:13;;6004:18;;;6123:22;;;5808:635;;5979:2;6202:15;;;;6176:2;6161:18;;;5808:635;6248:169;6262:6;6259:1;6256:13;6248:169;;;6323:13;;6311:26;;6392:15;;;;6357:12;;;;6284:1;6277:9;6248:169;;;-1:-1:-1;6434:3:11;;5959:484;-1:-1:-1;;;;;;5959:484:11:o;6448:187::-;6613:14;;6606:22;6588:41;;6576:2;6561:18;;6543:92::o;6640:202::-;-1:-1:-1;;;;;;6802:33:11;;;;6784:52;;6772:2;6757:18;;6739:103::o;7292:398::-;7494:2;7476:21;;;7533:2;7513:18;;;7506:30;7572:34;7567:2;7552:18;;7545:62;-1:-1:-1;;;7638:2:11;7623:18;;7616:32;7680:3;7665:19;;7466:224::o;7695:344::-;7897:2;7879:21;;;7936:2;7916:18;;;7909:30;-1:-1:-1;;;7970:2:11;7955:18;;7948:50;8030:2;8015:18;;7869:170::o;8044:339::-;8246:2;8228:21;;;8285:2;8265:18;;;8258:30;-1:-1:-1;;;8319:2:11;8304:18;;8297:45;8374:2;8359:18;;8218:165::o;8388:402::-;8590:2;8572:21;;;8629:2;8609:18;;;8602:30;8668:34;8663:2;8648:18;;8641:62;-1:-1:-1;;;8734:2:11;8719:18;;8712:36;8780:3;8765:19;;8562:228::o;8795:397::-;8997:2;8979:21;;;9036:2;9016:18;;;9009:30;9075:34;9070:2;9055:18;;9048:62;-1:-1:-1;;;9141:2:11;9126:18;;9119:31;9182:3;9167:19;;8969:223::o;9197:340::-;9399:2;9381:21;;;9438:2;9418:18;;;9411:30;-1:-1:-1;;;9472:2:11;9457:18;;9450:46;9528:2;9513:18;;9371:166::o;9542:356::-;9744:2;9726:21;;;9763:18;;;9756:30;9822:34;9817:2;9802:18;;9795:62;9889:2;9874:18;;9716:182::o;9903:345::-;10105:2;10087:21;;;10144:2;10124:18;;;10117:30;-1:-1:-1;;;10178:2:11;10163:18;;10156:51;10239:2;10224:18;;10077:171::o;10253:177::-;10399:25;;;10387:2;10372:18;;10354:76::o;10435:251::-;10505:2;10499:9;10535:17;;;10582:18;10567:34;;10603:22;;;10564:62;10561:2;;;10629:18;;:::i;:::-;10665:2;10658:22;10479:207;;-1:-1:-1;10479:207:11:o;10691:128::-;;10762:1;10758:6;10755:1;10752:13;10749:2;;;10768:18;;:::i;:::-;-1:-1:-1;10804:9:11;;10739:80::o;10824:168::-;;10930:1;10926;10922:6;10918:14;10915:1;10912:21;10907:1;10900:9;10893:17;10889:45;10886:2;;;10937:18;;:::i;:::-;-1:-1:-1;10977:9:11;;10876:116::o;10997:125::-;;11065:1;11062;11059:8;11056:2;;;11070:18;;:::i;:::-;-1:-1:-1;11107:9:11;;11046:76::o;11127:135::-;;-1:-1:-1;;11187:17:11;;11184:2;;;11207:18;;:::i;:::-;-1:-1:-1;11254:1:11;11243:13;;11174:88::o;11267:127::-;11328:10;11323:3;11319:20;11316:1;11309:31;11359:4;11356:1;11349:15;11383:4;11380:1;11373:15;11399:127;11460:10;11455:3;11451:20;11448:1;11441:31;11491:4;11488:1;11481:15;11515:4;11512:1;11505:15;11531:133;-1:-1:-1;;;;;11608:31:11;;11598:42;;11588:2;;11654:1;11651;11644:12;11588:2;11578:86;:::o
Swarm Source
ipfs://93881e3fb8827fe3fa9012748366b171028ada7990cc3dbbd7fe6a9a7d7e0eb4
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 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.