More Info
Private Name Tags
Latest 25 from a total of 696 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim | 19642558 | 136 days ago | IN | 0 ETH | 0.00260718 | ||||
Claim | 19642558 | 136 days ago | IN | 0 ETH | 0.0028378 | ||||
Claim | 16976857 | 510 days ago | IN | 0 ETH | 0.00662477 | ||||
Claim | 16976854 | 510 days ago | IN | 0 ETH | 0.00690254 | ||||
Claim | 16930544 | 516 days ago | IN | 0 ETH | 0.00477789 | ||||
Claim | 16930541 | 516 days ago | IN | 0 ETH | 0.00438464 | ||||
Claim | 16930534 | 516 days ago | IN | 0 ETH | 0.00628252 | ||||
Claim | 16783651 | 537 days ago | IN | 0 ETH | 0.00238446 | ||||
Claim | 16711929 | 547 days ago | IN | 0 ETH | 0.00259249 | ||||
Claim | 16709474 | 547 days ago | IN | 0 ETH | 0.00150338 | ||||
Claim | 16709463 | 547 days ago | IN | 0 ETH | 0.0022366 | ||||
Claim | 16658145 | 555 days ago | IN | 0 ETH | 0.00205227 | ||||
Claim | 16658140 | 555 days ago | IN | 0 ETH | 0.00239768 | ||||
Claim | 16645165 | 556 days ago | IN | 0 ETH | 0.00283461 | ||||
Claim | 16645160 | 556 days ago | IN | 0 ETH | 0.00358127 | ||||
Claim | 16632487 | 558 days ago | IN | 0 ETH | 0.00271293 | ||||
Claim | 16632478 | 558 days ago | IN | 0 ETH | 0.00262827 | ||||
Claim | 16623214 | 559 days ago | IN | 0 ETH | 0.0030604 | ||||
Claim | 16615814 | 561 days ago | IN | 0 ETH | 0.00171904 | ||||
Claim | 16615808 | 561 days ago | IN | 0 ETH | 0.0018781 | ||||
Claim | 16614759 | 561 days ago | IN | 0 ETH | 0.00273109 | ||||
Claim | 16608681 | 562 days ago | IN | 0 ETH | 0.00236822 | ||||
Claim | 16606623 | 562 days ago | IN | 0 ETH | 0.00375323 | ||||
Claim | 16604622 | 562 days ago | IN | 0 ETH | 0.00186342 | ||||
Claim | 16604618 | 562 days ago | IN | 0 ETH | 0.00199219 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
LaboratoriesStaking
Compiler Version
v0.8.4+commit.c7e474f2
Optimization Enabled:
Yes with 1000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// contracts/LaboratoriesStaking.sol // SPDX-License-Identifier: MIT pragma solidity ^0.8.4; import "@openzeppelin/contracts/access/Ownable.sol"; import "erc721a/contracts/IERC721A.sol"; import "@openzeppelin/contracts/interfaces/IERC721Receiver.sol"; struct StakeDetails { uint256 duration; address owner; uint256 timestamp; } contract LaboratoriesStaking is IERC721Receiver, Ownable { IERC721A private laboratories; IERC721A private vials; address private pool; uint256 private quantity = 250; // 250 vials initially uint256 private duration = 30 * 24 * 60 * 60; // 30 days mapping(uint256 => StakeDetails) stakes; mapping(address => uint256[]) wallets; bool private stakeActive = false; bool private claimActive = false; constructor( IERC721A _laboratoriesAddress, IERC721A _vialsAddress, address _pool ) { laboratories = _laboratoriesAddress; vials = _vialsAddress; pool = _pool; } function withdrawLabs(uint256[] calldata _labsId) external onlyOwner { for (uint256 i = 0; i < _labsId.length; i++) { laboratories.safeTransferFrom( address(this), msg.sender, _labsId[i] ); } } function stake(uint256 _laboratoryId) external { require(stakeActive, "Staking not active."); require(quantity > 0, "Vials pool exhausted."); // transfer lab to the contract laboratories.safeTransferFrom(msg.sender, address(this), _laboratoryId); // update staking information stakes[_laboratoryId] = StakeDetails( duration, msg.sender, block.timestamp ); wallets[msg.sender].push(_laboratoryId); quantity -= 1; } function claim(uint256 _laboratoryId, uint256 _vialId) external { require(claimActive, "Claiming not active."); StakeDetails memory details = stakes[_laboratoryId]; require( block.timestamp > details.timestamp + details.duration, "Required staking time is not over yet." ); // transfer lab back to the owner laboratories.safeTransferFrom( address(this), details.owner, _laboratoryId ); // transfer vial as a reward vials.safeTransferFrom(pool, details.owner, _vialId); // update staking information delete stakes[_laboratoryId]; uint256[] storage wallet = wallets[msg.sender]; uint256 index = indexOf(wallet, _laboratoryId); remove(wallet, index); } function getQuantity() external view returns (uint256) { return quantity; } function setQuantity(uint256 _quantity) external onlyOwner { quantity = _quantity; } function addQuantity(uint256 _quantity) external onlyOwner { quantity += _quantity; } function getStakeActive() external view returns (bool) { return stakeActive; } function setStakeActive(bool _stakeActive) external onlyOwner { stakeActive = _stakeActive; } function getClaimActive() external view returns (bool) { return claimActive; } function setClaimActive(bool _claimActive) external onlyOwner { claimActive = _claimActive; } function getDuration() external view returns (uint256) { return duration; } function setDuration(uint256 _duration) external onlyOwner { duration = _duration; } function getStakedLaboratories(address _address) external view returns (uint256[] memory) { return wallets[_address]; } function getStakeDetails(uint256 _laboratoryId) external view returns (StakeDetails memory) { return stakes[_laboratoryId]; } function getPoolAddress() external view returns (address) { return pool; } function indexOf(uint256[] memory array, uint256 element) private pure returns (uint256) { for (uint i = 0; i < array.length; i++) { if (array[i] == element) return i; } revert("not found"); } function remove(uint256[] storage array, uint index) private { array[index] = array[array.length - 1]; array.pop(); } function onERC721Received( address, address, uint256, bytes calldata ) external pure override returns (bytes4) { return IERC721Receiver.onERC721Received.selector; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/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() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { 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 { _transferOwnership(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"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // ERC721A Contracts v4.2.2 // Creator: Chiru Labs pragma solidity ^0.8.4; /** * @dev Interface of ERC721A. */ interface IERC721A { /** * The caller must own the token or be an approved operator. */ error ApprovalCallerNotOwnerNorApproved(); /** * The token does not exist. */ error ApprovalQueryForNonexistentToken(); /** * The caller cannot approve to their own address. */ error ApproveToCaller(); /** * Cannot query the balance for the zero address. */ error BalanceQueryForZeroAddress(); /** * Cannot mint to the zero address. */ error MintToZeroAddress(); /** * The quantity of tokens minted must be more than zero. */ error MintZeroQuantity(); /** * The token does not exist. */ error OwnerQueryForNonexistentToken(); /** * The caller must own the token or be an approved operator. */ error TransferCallerNotOwnerNorApproved(); /** * The token must be owned by `from`. */ error TransferFromIncorrectOwner(); /** * Cannot safely transfer to a contract that does not implement the * ERC721Receiver interface. */ error TransferToNonERC721ReceiverImplementer(); /** * Cannot transfer to the zero address. */ error TransferToZeroAddress(); /** * The token does not exist. */ error URIQueryForNonexistentToken(); /** * The `quantity` minted with ERC2309 exceeds the safety limit. */ error MintERC2309QuantityExceedsLimit(); /** * The `extraData` cannot be set on an unintialized ownership slot. */ error OwnershipNotInitializedForExtraData(); // ============================================================= // STRUCTS // ============================================================= struct TokenOwnership { // The address of the owner. address addr; // Stores the start time of ownership with minimal overhead for tokenomics. uint64 startTimestamp; // Whether the token has been burned. bool burned; // Arbitrary data similar to `startTimestamp` that can be set via {_extraData}. uint24 extraData; } // ============================================================= // TOKEN COUNTERS // ============================================================= /** * @dev Returns the total number of tokens in existence. * Burned tokens will reduce the count. * To get the total number of tokens minted, please see {_totalMinted}. */ function totalSupply() external view returns (uint256); // ============================================================= // IERC165 // ============================================================= /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified) * to learn more about how these ids are created. * * This function call must use less than 30000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); // ============================================================= // IERC721 // ============================================================= /** * @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, bytes calldata data ) external; /** * @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` 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 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 the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @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); // ============================================================= // IERC721Metadata // ============================================================= /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); // ============================================================= // IERC2309 // ============================================================= /** * @dev Emitted when tokens in `fromTokenId` to `toTokenId` * (inclusive) is transferred from `from` to `to`, as defined in the * [ERC2309](https://eips.ethereum.org/EIPS/eip-2309) standard. * * See {_mintERC2309} for more details. */ event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (interfaces/IERC721Receiver.sol) pragma solidity ^0.8.0; import "../token/ERC721/IERC721Receiver.sol";
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol) 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 `IERC721Receiver.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); }
{ "optimizer": { "enabled": true, "runs": 1000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IERC721A","name":"_laboratoriesAddress","type":"address"},{"internalType":"contract IERC721A","name":"_vialsAddress","type":"address"},{"internalType":"address","name":"_pool","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"},{"inputs":[{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"addQuantity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_laboratoryId","type":"uint256"},{"internalType":"uint256","name":"_vialId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getClaimActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getQuantity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStakeActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_laboratoryId","type":"uint256"}],"name":"getStakeDetails","outputs":[{"components":[{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"internalType":"struct StakeDetails","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getStakedLaboratories","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"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":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_claimActive","type":"bool"}],"name":"setClaimActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_duration","type":"uint256"}],"name":"setDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"setQuantity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_stakeActive","type":"bool"}],"name":"setStakeActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_laboratoryId","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_labsId","type":"uint256[]"}],"name":"withdrawLabs","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405260fa60045562278d006005556008805461ffff1916905534801561002757600080fd5b50604051611042380380611042833981016040819052610046916100e1565b61004f33610091565b600180546001600160a01b039485166001600160a01b031991821617909155600280549385169382169390931790925560038054919093169116179055610145565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806000606084860312156100f5578283fd5b83516101008161012d565b60208501519093506101118161012d565b60408501519092506101228161012d565b809150509250925092565b6001600160a01b038116811461014257600080fd5b50565b610eee806101546000396000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c80637de02280116100cd578063c349026311610081578063f2fde38b11610066578063f2fde38b14610317578063f586c6d91461032a578063f6be71d11461033b57600080fd5b8063c3490263146102f4578063ed850ca11461030757600080fd5b8063963c9dd3116100b2578063963c9dd31461029b578063a694fc3a146102d9578063ad2e8c9b146102ec57600080fd5b80637de022801461025f5780638da5cb5b1461027657600080fd5b80635ff162ca116101245780636e9777a2116101095780636e9777a214610224578063715018a61461024457806373417b091461024c57600080fd5b80635ff162ca146101fe57806363a1ab961461021157600080fd5b80630115949c146101565780630bf153261461016d578063150b7a021461018257806324c477c1146101eb575b600080fd5b6004545b6040519081526020015b60405180910390f35b61018061017b366004610ddb565b61034e565b005b6101ba610190366004610cb5565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610164565b6101806101f9366004610ddb565b61035b565b61018061020c366004610dbb565b61037d565b61018061021f366004610d4b565b610398565b610237610232366004610c94565b61047d565b6040516101649190610e14565b6101806104e9565b61018061025a366004610dbb565b6104fd565b60085460ff165b6040519015158152602001610164565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610164565b6102ae6102a9366004610ddb565b61051f565b60408051825181526020808401516001600160a01b0316908201529181015190820152606001610164565b6101806102e7366004610ddb565b61058e565b60055461015a565b610180610302366004610df3565b61073c565b600854610100900460ff16610266565b610180610325366004610c94565b6109e1565b6003546001600160a01b0316610283565b610180610349366004610ddb565b610a71565b610356610a7e565b600455565b610363610a7e565b80600460008282546103759190610e58565b909155505050565b610385610a7e565b6008805460ff1916911515919091179055565b6103a0610a7e565b60005b81811015610478576001546001600160a01b03166342842e0e30338686868181106103de57634e487b7160e01b600052603260045260246000fd5b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b15801561044d57600080fd5b505af1158015610461573d6000803e3d6000fd5b50505050808061047090610e87565b9150506103a3565b505050565b6001600160a01b0381166000908152600760209081526040918290208054835181840281018401909452808452606093928301828280156104dd57602002820191906000526020600020905b8154815260200190600101908083116104c9575b50505050509050919050565b6104f1610a7e565b6104fb6000610ad8565b565b610505610a7e565b600880549115156101000261ff0019909216919091179055565b61054c60405180606001604052806000815260200160006001600160a01b03168152602001600081525090565b5060009081526006602090815260409182902082516060810184528154815260018201546001600160a01b031692810192909252600201549181019190915290565b60085460ff166105e55760405162461bcd60e51b815260206004820152601360248201527f5374616b696e67206e6f74206163746976652e0000000000000000000000000060448201526064015b60405180910390fd5b6000600454116106375760405162461bcd60e51b815260206004820152601560248201527f5669616c7320706f6f6c206578686175737465642e000000000000000000000060448201526064016105dc565b600154604051632142170760e11b8152336004820152306024820152604481018390526001600160a01b03909116906342842e0e90606401600060405180830381600087803b15801561068957600080fd5b505af115801561069d573d6000803e3d6000fd5b5050604080516060810182526005548152336020808301828152428486019081526000898152600684528681209551865591516001808701805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039093169290921790915590516002909501949094559182526007815292812080548084018255908252928120909201859055600480549194509250610375908490610e70565b600854610100900460ff166107935760405162461bcd60e51b815260206004820152601460248201527f436c61696d696e67206e6f74206163746976652e00000000000000000000000060448201526064016105dc565b6000828152600660209081526040918290208251606081018452815480825260018301546001600160a01b031693820193909352600290910154928101839052916107de9190610e58565b42116108525760405162461bcd60e51b815260206004820152602660248201527f5265717569726564207374616b696e672074696d65206973206e6f74206f766560448201527f72207965742e000000000000000000000000000000000000000000000000000060648201526084016105dc565b6001546020820151604051632142170760e11b81523060048201526001600160a01b039182166024820152604481018690529116906342842e0e90606401600060405180830381600087803b1580156108aa57600080fd5b505af11580156108be573d6000803e3d6000fd5b50506002546003546020850151604051632142170760e11b81526001600160a01b039283166004820152908216602482015260448101879052911692506342842e0e9150606401600060405180830381600087803b15801561091f57600080fd5b505af1158015610933573d6000803e3d6000fd5b505050600084815260066020908152604080832083815560018101805473ffffffffffffffffffffffffffffffffffffffff191690556002018390553383526007825280832080548251818502810185019093528083529094506109ce928591908301828280156109c357602002820191906000526020600020905b8154815260200190600101908083116109af575b505050505086610b35565b90506109da8282610bd9565b5050505050565b6109e9610a7e565b6001600160a01b038116610a655760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016105dc565b610a6e81610ad8565b50565b610a79610a7e565b600555565b6000546001600160a01b031633146104fb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105dc565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000805b8351811015610b8a5782848281518110610b6357634e487b7160e01b600052603260045260246000fd5b60200260200101511415610b78579050610bd3565b80610b8281610e87565b915050610b39565b5060405162461bcd60e51b815260206004820152600960248201527f6e6f7420666f756e64000000000000000000000000000000000000000000000060448201526064016105dc565b92915050565b81548290610be990600190610e70565b81548110610c0757634e487b7160e01b600052603260045260246000fd5b9060005260206000200154828281548110610c3257634e487b7160e01b600052603260045260246000fd5b906000526020600020018190555081805480610c5e57634e487b7160e01b600052603160045260246000fd5b600190038181906000526020600020016000905590555050565b80356001600160a01b0381168114610c8f57600080fd5b919050565b600060208284031215610ca5578081fd5b610cae82610c78565b9392505050565b600080600080600060808688031215610ccc578081fd5b610cd586610c78565b9450610ce360208701610c78565b935060408601359250606086013567ffffffffffffffff80821115610d06578283fd5b818801915088601f830112610d19578283fd5b813581811115610d27578384fd5b896020828501011115610d38578384fd5b9699959850939650602001949392505050565b60008060208385031215610d5d578182fd5b823567ffffffffffffffff80821115610d74578384fd5b818501915085601f830112610d87578384fd5b813581811115610d95578485fd5b8660208260051b8501011115610da9578485fd5b60209290920196919550909350505050565b600060208284031215610dcc578081fd5b81358015158114610cae578182fd5b600060208284031215610dec578081fd5b5035919050565b60008060408385031215610e05578182fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b81811015610e4c57835183529284019291840191600101610e30565b50909695505050505050565b60008219821115610e6b57610e6b610ea2565b500190565b600082821015610e8257610e82610ea2565b500390565b6000600019821415610e9b57610e9b610ea2565b5060010190565b634e487b7160e01b600052601160045260246000fdfea264697066735822122057dd73a7b965885330fa10f2d64962c08f6b8170b86df8c19783e4f6bf82600564736f6c634300080400330000000000000000000000007789eeaf7a1040377a77cfc2c35a6a7bf1011338000000000000000000000000ec996206d1a8fc444870543a9d0b9a490aadbf4c000000000000000000000000efb5fe4bf6af2631502f86864df0c37b7cc18f7d
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101515760003560e01c80637de02280116100cd578063c349026311610081578063f2fde38b11610066578063f2fde38b14610317578063f586c6d91461032a578063f6be71d11461033b57600080fd5b8063c3490263146102f4578063ed850ca11461030757600080fd5b8063963c9dd3116100b2578063963c9dd31461029b578063a694fc3a146102d9578063ad2e8c9b146102ec57600080fd5b80637de022801461025f5780638da5cb5b1461027657600080fd5b80635ff162ca116101245780636e9777a2116101095780636e9777a214610224578063715018a61461024457806373417b091461024c57600080fd5b80635ff162ca146101fe57806363a1ab961461021157600080fd5b80630115949c146101565780630bf153261461016d578063150b7a021461018257806324c477c1146101eb575b600080fd5b6004545b6040519081526020015b60405180910390f35b61018061017b366004610ddb565b61034e565b005b6101ba610190366004610cb5565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610164565b6101806101f9366004610ddb565b61035b565b61018061020c366004610dbb565b61037d565b61018061021f366004610d4b565b610398565b610237610232366004610c94565b61047d565b6040516101649190610e14565b6101806104e9565b61018061025a366004610dbb565b6104fd565b60085460ff165b6040519015158152602001610164565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610164565b6102ae6102a9366004610ddb565b61051f565b60408051825181526020808401516001600160a01b0316908201529181015190820152606001610164565b6101806102e7366004610ddb565b61058e565b60055461015a565b610180610302366004610df3565b61073c565b600854610100900460ff16610266565b610180610325366004610c94565b6109e1565b6003546001600160a01b0316610283565b610180610349366004610ddb565b610a71565b610356610a7e565b600455565b610363610a7e565b80600460008282546103759190610e58565b909155505050565b610385610a7e565b6008805460ff1916911515919091179055565b6103a0610a7e565b60005b81811015610478576001546001600160a01b03166342842e0e30338686868181106103de57634e487b7160e01b600052603260045260246000fd5b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b15801561044d57600080fd5b505af1158015610461573d6000803e3d6000fd5b50505050808061047090610e87565b9150506103a3565b505050565b6001600160a01b0381166000908152600760209081526040918290208054835181840281018401909452808452606093928301828280156104dd57602002820191906000526020600020905b8154815260200190600101908083116104c9575b50505050509050919050565b6104f1610a7e565b6104fb6000610ad8565b565b610505610a7e565b600880549115156101000261ff0019909216919091179055565b61054c60405180606001604052806000815260200160006001600160a01b03168152602001600081525090565b5060009081526006602090815260409182902082516060810184528154815260018201546001600160a01b031692810192909252600201549181019190915290565b60085460ff166105e55760405162461bcd60e51b815260206004820152601360248201527f5374616b696e67206e6f74206163746976652e0000000000000000000000000060448201526064015b60405180910390fd5b6000600454116106375760405162461bcd60e51b815260206004820152601560248201527f5669616c7320706f6f6c206578686175737465642e000000000000000000000060448201526064016105dc565b600154604051632142170760e11b8152336004820152306024820152604481018390526001600160a01b03909116906342842e0e90606401600060405180830381600087803b15801561068957600080fd5b505af115801561069d573d6000803e3d6000fd5b5050604080516060810182526005548152336020808301828152428486019081526000898152600684528681209551865591516001808701805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039093169290921790915590516002909501949094559182526007815292812080548084018255908252928120909201859055600480549194509250610375908490610e70565b600854610100900460ff166107935760405162461bcd60e51b815260206004820152601460248201527f436c61696d696e67206e6f74206163746976652e00000000000000000000000060448201526064016105dc565b6000828152600660209081526040918290208251606081018452815480825260018301546001600160a01b031693820193909352600290910154928101839052916107de9190610e58565b42116108525760405162461bcd60e51b815260206004820152602660248201527f5265717569726564207374616b696e672074696d65206973206e6f74206f766560448201527f72207965742e000000000000000000000000000000000000000000000000000060648201526084016105dc565b6001546020820151604051632142170760e11b81523060048201526001600160a01b039182166024820152604481018690529116906342842e0e90606401600060405180830381600087803b1580156108aa57600080fd5b505af11580156108be573d6000803e3d6000fd5b50506002546003546020850151604051632142170760e11b81526001600160a01b039283166004820152908216602482015260448101879052911692506342842e0e9150606401600060405180830381600087803b15801561091f57600080fd5b505af1158015610933573d6000803e3d6000fd5b505050600084815260066020908152604080832083815560018101805473ffffffffffffffffffffffffffffffffffffffff191690556002018390553383526007825280832080548251818502810185019093528083529094506109ce928591908301828280156109c357602002820191906000526020600020905b8154815260200190600101908083116109af575b505050505086610b35565b90506109da8282610bd9565b5050505050565b6109e9610a7e565b6001600160a01b038116610a655760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016105dc565b610a6e81610ad8565b50565b610a79610a7e565b600555565b6000546001600160a01b031633146104fb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105dc565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000805b8351811015610b8a5782848281518110610b6357634e487b7160e01b600052603260045260246000fd5b60200260200101511415610b78579050610bd3565b80610b8281610e87565b915050610b39565b5060405162461bcd60e51b815260206004820152600960248201527f6e6f7420666f756e64000000000000000000000000000000000000000000000060448201526064016105dc565b92915050565b81548290610be990600190610e70565b81548110610c0757634e487b7160e01b600052603260045260246000fd5b9060005260206000200154828281548110610c3257634e487b7160e01b600052603260045260246000fd5b906000526020600020018190555081805480610c5e57634e487b7160e01b600052603160045260246000fd5b600190038181906000526020600020016000905590555050565b80356001600160a01b0381168114610c8f57600080fd5b919050565b600060208284031215610ca5578081fd5b610cae82610c78565b9392505050565b600080600080600060808688031215610ccc578081fd5b610cd586610c78565b9450610ce360208701610c78565b935060408601359250606086013567ffffffffffffffff80821115610d06578283fd5b818801915088601f830112610d19578283fd5b813581811115610d27578384fd5b896020828501011115610d38578384fd5b9699959850939650602001949392505050565b60008060208385031215610d5d578182fd5b823567ffffffffffffffff80821115610d74578384fd5b818501915085601f830112610d87578384fd5b813581811115610d95578485fd5b8660208260051b8501011115610da9578485fd5b60209290920196919550909350505050565b600060208284031215610dcc578081fd5b81358015158114610cae578182fd5b600060208284031215610dec578081fd5b5035919050565b60008060408385031215610e05578182fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b81811015610e4c57835183529284019291840191600101610e30565b50909695505050505050565b60008219821115610e6b57610e6b610ea2565b500190565b600082821015610e8257610e82610ea2565b500390565b6000600019821415610e9b57610e9b610ea2565b5060010190565b634e487b7160e01b600052601160045260246000fdfea264697066735822122057dd73a7b965885330fa10f2d64962c08f6b8170b86df8c19783e4f6bf82600564736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007789eeaf7a1040377a77cfc2c35a6a7bf1011338000000000000000000000000ec996206d1a8fc444870543a9d0b9a490aadbf4c000000000000000000000000efb5fe4bf6af2631502f86864df0c37b7cc18f7d
-----Decoded View---------------
Arg [0] : _laboratoriesAddress (address): 0x7789eeaf7a1040377A77cfc2C35A6a7BF1011338
Arg [1] : _vialsAddress (address): 0xEC996206D1A8Fc444870543a9D0b9a490aaDBF4c
Arg [2] : _pool (address): 0xEFB5fE4bF6af2631502f86864df0c37b7Cc18F7d
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000007789eeaf7a1040377a77cfc2c35a6a7bf1011338
Arg [1] : 000000000000000000000000ec996206d1a8fc444870543a9d0b9a490aadbf4c
Arg [2] : 000000000000000000000000efb5fe4bf6af2631502f86864df0c37b7cc18f7d
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.