More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,091 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim All Reward... | 21298918 | 64 days ago | IN | 0 ETH | 0.00053368 | ||||
Unstake Many | 20529565 | 172 days ago | IN | 0 ETH | 0.00032461 | ||||
Unstake Many | 20338926 | 198 days ago | IN | 0 ETH | 0.00059884 | ||||
Claim All Reward... | 20148763 | 225 days ago | IN | 0 ETH | 0.00032474 | ||||
Claim All Reward... | 19780928 | 276 days ago | IN | 0 ETH | 0.00045906 | ||||
Claim All Reward... | 19676534 | 291 days ago | IN | 0 ETH | 0.00329056 | ||||
Claim All Reward... | 19505086 | 315 days ago | IN | 0 ETH | 0.00137424 | ||||
Claim All Reward... | 19505083 | 315 days ago | IN | 0 ETH | 0.00136208 | ||||
Claim All Reward... | 19221287 | 355 days ago | IN | 0 ETH | 0.00372206 | ||||
Claim All Reward... | 18869306 | 404 days ago | IN | 0 ETH | 0.00225009 | ||||
Unstake Many | 18598712 | 442 days ago | IN | 0 ETH | 0.00192111 | ||||
Claim All Reward... | 18544121 | 450 days ago | IN | 0 ETH | 0.00535765 | ||||
Claim All Reward... | 18427426 | 466 days ago | IN | 0 ETH | 0.00286187 | ||||
Unstake Many | 18427423 | 466 days ago | IN | 0 ETH | 0.00213099 | ||||
Claim All Reward... | 18224822 | 494 days ago | IN | 0 ETH | 0.00052238 | ||||
Unstake | 18224819 | 494 days ago | IN | 0 ETH | 0.00061403 | ||||
Stake | 18222704 | 495 days ago | IN | 0 ETH | 0.00154093 | ||||
Claim All Reward... | 18141858 | 506 days ago | IN | 0 ETH | 0.00110102 | ||||
Claim All Reward... | 18034589 | 521 days ago | IN | 0 ETH | 0.00162093 | ||||
Claim All Reward... | 18031097 | 522 days ago | IN | 0 ETH | 0.00070562 | ||||
Claim All Reward... | 18031095 | 522 days ago | IN | 0 ETH | 0.00177004 | ||||
Unstake Many | 17866416 | 545 days ago | IN | 0 ETH | 0.00185006 | ||||
Claim All Reward... | 17564333 | 587 days ago | IN | 0 ETH | 0.00309163 | ||||
Unstake Many | 17564332 | 587 days ago | IN | 0 ETH | 0.00276519 | ||||
Claim All Reward... | 17062661 | 658 days ago | IN | 0 ETH | 0.00203377 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
MetaTriadsStaking
Compiler Version
v0.8.13+commit.abaa5c0e
Optimization Enabled:
Yes with 1000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import { MerkleProof } from "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol"; abstract contract ITria is IERC20 { function mintRewardForUser(address user, uint256 amount) external {} } contract MetaTriadsStaking is Ownable { IERC721 public metatriads; ITria public tria; struct userStakeData { uint64 lastActionTimeStamp; uint64 stakedAmount; uint128 pendingClaim; } mapping(uint256 => address) public traidToOwner; mapping(address => userStakeData) public userToStakeData; mapping(address => uint256) public userToTotalEarned; uint256 public dailyStakingReward = 9 ether; uint256 public timePeriod = 1 days; bytes32 public bonusMerkleRoot = ""; mapping(address => uint256) public addressToNonce; event Stake(address indexed staker, uint256 indexed triad); event Unstake(address indexed staker, uint256 indexed triad); event Claim(address indexed claimer, uint256 indexed amount); constructor( address _metatriads, address _tria ) { metatriads = IERC721(_metatriads); tria = ITria(_tria); } function _getRewardFromPeriod(uint256 timestamp, uint256 stakedAmount) internal view returns (uint256) { return (block.timestamp - timestamp) * stakedAmount * dailyStakingReward / timePeriod; } function stake(uint256 metatriad) external { require(traidToOwner[metatriad] == address(0), "Metatriad already staked"); require(metatriads.ownerOf(metatriad) == msg.sender, "Sender does not own metatriad"); traidToOwner[metatriad] = msg.sender; userStakeData storage stakeData = userToStakeData[msg.sender]; stakeData.pendingClaim += uint128(_getRewardFromPeriod(stakeData.lastActionTimeStamp, stakeData.stakedAmount)); stakeData.stakedAmount += 1; stakeData.lastActionTimeStamp = uint64(block.timestamp); metatriads.transferFrom(msg.sender, address(this), metatriad); emit Stake(msg.sender, metatriad); } function unstake(uint256 metatriad) external { require(traidToOwner[metatriad] == msg.sender, "Sender does not own metatriad"); require(metatriads.ownerOf(metatriad) == address(this), "Metatriad not staked"); delete traidToOwner[metatriad]; userStakeData storage stakeData = userToStakeData[msg.sender]; stakeData.pendingClaim += uint128(_getRewardFromPeriod(stakeData.lastActionTimeStamp, stakeData.stakedAmount)); stakeData.stakedAmount -= 1; stakeData.lastActionTimeStamp = uint64(block.timestamp); metatriads.transferFrom(address(this), msg.sender, metatriad); emit Unstake(msg.sender, metatriad); } function stakeMany(uint256[] calldata manyMetatriads) external { require(manyMetatriads.length > 0, "No metatriads supplied"); for (uint i = 0; i < manyMetatriads.length; i++) { uint256 metatriad = manyMetatriads[i]; require(traidToOwner[metatriad] == address(0), "Metatriad already staked"); require(metatriads.ownerOf(metatriad) == msg.sender, "Sender does not own metatriad"); traidToOwner[metatriad] = msg.sender; metatriads.transferFrom(msg.sender, address(this), metatriad); emit Stake(msg.sender, metatriad); } userStakeData storage stakeData = userToStakeData[msg.sender]; stakeData.pendingClaim += uint128(_getRewardFromPeriod(stakeData.lastActionTimeStamp, stakeData.stakedAmount)); stakeData.stakedAmount += uint64(manyMetatriads.length); stakeData.lastActionTimeStamp = uint64(block.timestamp); } function unstakeMany(uint256[] calldata manyMetatriads) external { require(manyMetatriads.length > 0, "No metatriads supplied"); for (uint i = 0; i < manyMetatriads.length; i++) { uint256 metatriad = manyMetatriads[i]; require(traidToOwner[metatriad] == msg.sender, "Sender does not own metatriad"); require(metatriads.ownerOf(metatriad) == address(this), "Metatriad not staked"); delete traidToOwner[metatriad]; metatriads.transferFrom(address(this), msg.sender, metatriad); emit Unstake(msg.sender, metatriad); } userStakeData storage stakeData = userToStakeData[msg.sender]; stakeData.pendingClaim += uint128(_getRewardFromPeriod(stakeData.lastActionTimeStamp, stakeData.stakedAmount)); stakeData.stakedAmount -= uint64(manyMetatriads.length); stakeData.lastActionTimeStamp = uint64(block.timestamp); } function claimAllRewards(uint256 bonusAmount, uint256 nonce, bytes32[] memory proof) external { userStakeData storage stakeData = userToStakeData[msg.sender]; uint256 pendingClaim = stakeData.pendingClaim + _getRewardFromPeriod(stakeData.lastActionTimeStamp, stakeData.stakedAmount); if (proof.length > 0) { bytes32 leaf = keccak256(abi.encodePacked(msg.sender, bonusAmount, nonce)); if (MerkleProof.verify(proof, bonusMerkleRoot, leaf) && nonce == addressToNonce[msg.sender]) { pendingClaim += bonusAmount; addressToNonce[msg.sender] += 1; } } stakeData.pendingClaim = 0; stakeData.lastActionTimeStamp = uint64(block.timestamp); userToTotalEarned[msg.sender] += pendingClaim; tria.mintRewardForUser(msg.sender, pendingClaim); emit Claim(msg.sender, pendingClaim); } function getTotalClaimableFromUser(address user, uint256 bonusAmount, uint256 nonce, bytes32[] memory proof) external view returns (uint256) { userStakeData memory stakeData = userToStakeData[user]; uint256 pendingClaim = stakeData.pendingClaim + _getRewardFromPeriod(stakeData.lastActionTimeStamp, stakeData.stakedAmount); if (proof.length > 0) { bytes32 leaf = keccak256(abi.encodePacked(msg.sender, bonusAmount, nonce)); if (MerkleProof.verify(proof, bonusMerkleRoot, leaf) && nonce == addressToNonce[msg.sender]) { pendingClaim += bonusAmount; } } return pendingClaim; } function getStakedTraidsOfUser(address user) external view returns (uint256[] memory) { userStakeData memory stakeData = userToStakeData[user]; uint256 amountStaked = stakeData.stakedAmount; uint256[] memory ownedMetaTriads = new uint256[](amountStaked); uint256 counter; for (uint i = 0; i <= 2560; i++) { address metatriadOwner = traidToOwner[i]; if (metatriadOwner == user) { ownedMetaTriads[counter] = i; counter++; } } return ownedMetaTriads; } function setContracts(address _metatriads, address _tria) external onlyOwner { metatriads = IERC721(_metatriads); tria = ITria(_tria); } function setMerkleRoot(bytes32 root) external onlyOwner { bonusMerkleRoot = root; } function setDailyStakingReward(uint256 _dailyStakingReward) external onlyOwner { dailyStakingReward = _dailyStakingReward; } function setTimePeriod(uint256 newPeriod) external onlyOwner { timePeriod = newPeriod; } function setApprovalForAll(address operator, bool _approved) external onlyOwner { metatriads.setApprovalForAll(operator, _approved); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (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 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 { _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 // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; import "../../utils/introspection/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 // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol) 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 `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, 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 `from` to `to` 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 from, address to, 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 // OpenZeppelin Contracts (last updated v4.5.0) (utils/cryptography/MerkleProof.sol) pragma solidity ^0.8.0; /** * @dev These functions deal with verification of Merkle Trees proofs. * * The proofs can be generated using the JavaScript library * https://github.com/miguelmota/merkletreejs[merkletreejs]. * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled. * * See `test/utils/cryptography/MerkleProof.test.js` for some examples. */ library MerkleProof { /** * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree * defined by `root`. For this, a `proof` must be provided, containing * sibling hashes on the branch from the leaf to the root of the tree. Each * pair of leaves and each pair of pre-images are assumed to be sorted. */ function verify( bytes32[] memory proof, bytes32 root, bytes32 leaf ) internal pure returns (bool) { return processProof(proof, leaf) == root; } /** * @dev Returns the rebuilt hash obtained by traversing a Merklee tree up * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt * hash matches the root of the tree. When processing the proof, the pairs * of leafs & pre-images are assumed to be sorted. * * _Available since v4.4._ */ function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { bytes32 proofElement = proof[i]; if (computedHash <= proofElement) { // Hash(current computed hash + current element of the proof) computedHash = _efficientHash(computedHash, proofElement); } else { // Hash(current element of the proof + current computed hash) computedHash = _efficientHash(proofElement, computedHash); } } return computedHash; } function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) { assembly { mstore(0x00, a) mstore(0x20, b) value := keccak256(0x00, 0x40) } } }
// 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 v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
{ "optimizer": { "enabled": true, "runs": 1000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_metatriads","type":"address"},{"internalType":"address","name":"_tria","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"claimer","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claim","type":"event"},{"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":true,"internalType":"address","name":"staker","type":"address"},{"indexed":true,"internalType":"uint256","name":"triad","type":"uint256"}],"name":"Stake","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"staker","type":"address"},{"indexed":true,"internalType":"uint256","name":"triad","type":"uint256"}],"name":"Unstake","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addressToNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bonusMerkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"bonusAmount","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"claimAllRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dailyStakingReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getStakedTraidsOfUser","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"bonusAmount","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"getTotalClaimableFromUser","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"metatriads","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","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":"address","name":"operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_metatriads","type":"address"},{"internalType":"address","name":"_tria","type":"address"}],"name":"setContracts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_dailyStakingReward","type":"uint256"}],"name":"setDailyStakingReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"root","type":"bytes32"}],"name":"setMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPeriod","type":"uint256"}],"name":"setTimePeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"metatriad","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"manyMetatriads","type":"uint256[]"}],"name":"stakeMany","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"timePeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"traidToOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tria","outputs":[{"internalType":"contract ITria","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"metatriad","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"manyMetatriads","type":"uint256[]"}],"name":"unstakeMany","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userToStakeData","outputs":[{"internalType":"uint64","name":"lastActionTimeStamp","type":"uint64"},{"internalType":"uint64","name":"stakedAmount","type":"uint64"},{"internalType":"uint128","name":"pendingClaim","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userToTotalEarned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6080604052677ce66c50e28400006006556201518060075560006008553480156200002957600080fd5b5060405162001e6038038062001e608339810160408190526200004c91620000f6565b620000573362000089565b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556200012e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620000f157600080fd5b919050565b600080604083850312156200010a57600080fd5b6200011583620000d9565b91506200012560208401620000d9565b90509250929050565b611d22806200013e6000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c8063a4eeb2ad116100e3578063dddc8d8b1161008c578063f2fde38b11610066578063f2fde38b146103d0578063fb0aec8e146103e3578063fe939afc146103f657600080fd5b8063dddc8d8b14610374578063df7d731514610394578063e4b3f631146103bd57600080fd5b8063cfe08b47116100bd578063cfe08b471461033b578063d6e8847b1461034e578063d8952a491461036157600080fd5b8063a4eeb2ad146102ff578063a694fc3a14610308578063ad79d15d1461031b57600080fd5b806343019c19116101455780638da5cb5b1161011f5780638da5cb5b146102bb5780639114e68b146102cc578063a22cb465146102ec57600080fd5b806343019c1914610275578063715018a6146102a05780637cb64759146102a857600080fd5b8063360fdff211610176578063360fdff2146101d85780633d0a7b35146102555780633e79d1e11461026c57600080fd5b80630d50c1891461019d57806319d481ba146101b25780632e17de78146101c5575b600080fd5b6101b06101ab3660046118cf565b610409565b005b6101b06101c0366004611944565b610754565b6101b06101d3366004611944565b6107b3565b6102206101e6366004611972565b60046020526000908152604090205467ffffffffffffffff80821691600160401b810490911690600160801b90046001600160801b031683565b6040805167ffffffffffffffff94851681529390921660208401526001600160801b0316908201526060015b60405180910390f35b61025e60065481565b60405190815260200161024c565b61025e60075481565b600154610288906001600160a01b031681565b6040516001600160a01b03909116815260200161024c565b6101b0610a64565b6101b06102b6366004611944565b610aca565b6000546001600160a01b0316610288565b61025e6102da366004611972565b60056020526000908152604090205481565b6101b06102fa36600461198f565b610b29565b61025e60085481565b6101b0610316366004611944565b610c07565b61025e610329366004611972565b60096020526000908152604090205481565b600254610288906001600160a01b031681565b61025e61035c366004611a7e565b610ebb565b6101b061036f366004611ae1565b610fd1565b610387610382366004611972565b611059565b60405161024c9190611b0f565b6102886103a2366004611944565b6003602052600090815260409020546001600160a01b031681565b6101b06103cb366004611b53565b611170565b6101b06103de366004611972565b611369565b6101b06103f1366004611944565b61144b565b6101b06104043660046118cf565b6114aa565b8061045b5760405162461bcd60e51b815260206004820152601660248201527f4e6f206d65746174726961647320737570706c6965640000000000000000000060448201526064015b60405180910390fd5b60005b8181101561067957600083838381811061047a5761047a611ba3565b6020908102929092013560008181526003909352604090922054919250506001600160a01b031633146104ef5760405162461bcd60e51b815260206004820152601d60248201527f53656e64657220646f6573206e6f74206f776e206d65746174726961640000006044820152606401610452565b6001546040516331a9108f60e11b81526004810183905230916001600160a01b031690636352211e90602401602060405180830381865afa158015610538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055c9190611bb9565b6001600160a01b0316146105b25760405162461bcd60e51b815260206004820152601460248201527f4d6574617472696164206e6f74207374616b65640000000000000000000000006044820152606401610452565b6000818152600360205260409081902080546001600160a01b031916905560015490516323b872dd60e01b8152306004820152336024820152604481018390526001600160a01b03909116906323b872dd90606401600060405180830381600087803b15801561062157600080fd5b505af1158015610635573d6000803e3d6000fd5b50506040518392503391507f85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd90600090a3508061067181611bec565b91505061045e565b5033600090815260046020526040902080546106a99067ffffffffffffffff80821691600160401b9004166117bb565b815482906010906106cb908490600160801b90046001600160801b0316611c05565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550828290508160000160088282829054906101000a900467ffffffffffffffff166107199190611c30565b82546101009290920a67ffffffffffffffff818102199093169183160217909155825467ffffffffffffffff19164290911617909155505050565b6000546001600160a01b031633146107ae5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610452565b600655565b6000818152600360205260409020546001600160a01b031633146108195760405162461bcd60e51b815260206004820152601d60248201527f53656e64657220646f6573206e6f74206f776e206d65746174726961640000006044820152606401610452565b6001546040516331a9108f60e11b81526004810183905230916001600160a01b031690636352211e90602401602060405180830381865afa158015610862573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108869190611bb9565b6001600160a01b0316146108dc5760405162461bcd60e51b815260206004820152601460248201527f4d6574617472696164206e6f74207374616b65640000000000000000000000006044820152606401610452565b600081815260036020908152604080832080546001600160a01b03191690553383526004909152902080546109259067ffffffffffffffff80821691600160401b9004166117bb565b81548290601090610947908490600160801b90046001600160801b0316611c05565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555060018160000160088282829054906101000a900467ffffffffffffffff166109939190611c30565b82546101009290920a67ffffffffffffffff818102199093169183160217909155825467ffffffffffffffff191642909116178255506001546040516323b872dd60e01b8152306004820152336024820152604481018490526001600160a01b03909116906323b872dd90606401600060405180830381600087803b158015610a1b57600080fd5b505af1158015610a2f573d6000803e3d6000fd5b50506040518492503391507f85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd90600090a35050565b6000546001600160a01b03163314610abe5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610452565b610ac860006117f5565b565b6000546001600160a01b03163314610b245760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610452565b600855565b6000546001600160a01b03163314610b835760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610452565b6001546040517fa22cb4650000000000000000000000000000000000000000000000000000000081526001600160a01b03848116600483015283151560248301529091169063a22cb46590604401600060405180830381600087803b158015610beb57600080fd5b505af1158015610bff573d6000803e3d6000fd5b505050505050565b6000818152600360205260409020546001600160a01b031615610c6c5760405162461bcd60e51b815260206004820152601860248201527f4d657461747269616420616c7265616479207374616b656400000000000000006044820152606401610452565b6001546040516331a9108f60e11b81526004810183905233916001600160a01b031690636352211e90602401602060405180830381865afa158015610cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd99190611bb9565b6001600160a01b031614610d2f5760405162461bcd60e51b815260206004820152601d60248201527f53656e64657220646f6573206e6f74206f776e206d65746174726961640000006044820152606401610452565b600081815260036020908152604080832080546001600160a01b031916339081179091558352600490915290208054610d7c9067ffffffffffffffff80821691600160401b9004166117bb565b81548290601090610d9e908490600160801b90046001600160801b0316611c05565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555060018160000160088282829054906101000a900467ffffffffffffffff16610dea9190611c59565b82546101009290920a67ffffffffffffffff818102199093169183160217909155825467ffffffffffffffff191642909116178255506001546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd90606401600060405180830381600087803b158015610e7257600080fd5b505af1158015610e86573d6000803e3d6000fd5b50506040518492503391507febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a90600090a35050565b6001600160a01b03841660009081526004602090815260408083208151606081018352905467ffffffffffffffff808216808452600160401b8304909116948301859052600160801b9091046001600160801b031692820192909252918391610f23916117bb565b82604001516001600160801b0316610f3b9190611c7c565b845190915015610fc7576040516bffffffffffffffffffffffff193360601b1660208201526034810187905260548101869052600090607401604051602081830303815290604052805190602001209050610f998560085483611845565b8015610fb357503360009081526009602052604090205486145b15610fc557610fc28783611c7c565b91505b505b9695505050505050565b6000546001600160a01b0316331461102b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610452565b600180546001600160a01b039384166001600160a01b03199182161790915560028054929093169116179055565b6001600160a01b0381166000908152600460209081526040808320815160608082018452915467ffffffffffffffff8082168352600160401b82048116958301869052600160801b9091046001600160801b031693820193909352909390929182908111156110ca576110ca6119cd565b6040519080825280602002602001820160405280156110f3578160200160208202803683370190505b5090506000805b610a008111611165576000818152600360205260409020546001600160a01b039081169088168103611152578184848151811061113957611139611ba3565b60209081029190910101528261114e81611bec565b9350505b508061115d81611bec565b9150506110fa565b509095945050505050565b33600090815260046020526040812080549091906111a29067ffffffffffffffff80821691600160401b9004166117bb565b82546111be9190600160801b90046001600160801b0316611c7c565b835190915015611272576040516bffffffffffffffffffffffff193360601b166020820152603481018690526054810185905260009060740160405160208183030381529060405280519060200120905061121c8460085483611845565b801561123657503360009081526009602052604090205485145b15611270576112458683611c7c565b336000908152600960205260408120805492945060019290919061126a908490611c7c565b90915550505b505b81546fffffffffffffffff0000000000000000164267ffffffffffffffff1617825533600090815260056020526040812080548392906112b3908490611c7c565b90915550506002546040517fd01e7c36000000000000000000000000000000000000000000000000000000008152336004820152602481018390526001600160a01b039091169063d01e7c3690604401600060405180830381600087803b15801561131d57600080fd5b505af1158015611331573d6000803e3d6000fd5b50506040518392503391507f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d490600090a35050505050565b6000546001600160a01b031633146113c35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610452565b6001600160a01b03811661143f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610452565b611448816117f5565b50565b6000546001600160a01b031633146114a55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610452565b600755565b806114f75760405162461bcd60e51b815260206004820152601660248201527f4e6f206d65746174726961647320737570706c696564000000000000000000006044820152606401610452565b60005b8181101561171b57600083838381811061151657611516611ba3565b6020908102929092013560008181526003909352604090922054919250506001600160a01b03161561158a5760405162461bcd60e51b815260206004820152601860248201527f4d657461747269616420616c7265616479207374616b656400000000000000006044820152606401610452565b6001546040516331a9108f60e11b81526004810183905233916001600160a01b031690636352211e90602401602060405180830381865afa1580156115d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f79190611bb9565b6001600160a01b03161461164d5760405162461bcd60e51b815260206004820152601d60248201527f53656e64657220646f6573206e6f74206f776e206d65746174726961640000006044820152606401610452565b6000818152600360205260409081902080546001600160a01b0319163390811790915560015491516323b872dd60e01b81526004810191909152306024820152604481018390526001600160a01b03909116906323b872dd90606401600060405180830381600087803b1580156116c357600080fd5b505af11580156116d7573d6000803e3d6000fd5b50506040518392503391507febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a90600090a3508061171381611bec565b9150506114fa565b50336000908152600460205260409020805461174b9067ffffffffffffffff80821691600160401b9004166117bb565b8154829060109061176d908490600160801b90046001600160801b0316611c05565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550828290508160000160088282829054906101000a900467ffffffffffffffff166107199190611c59565b60006007546006548385426117d09190611c94565b6117da9190611cab565b6117e49190611cab565b6117ee9190611cca565b9392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600082611852858461185b565b14949350505050565b600081815b84518110156118c757600085828151811061187d5761187d611ba3565b602002602001015190508083116118a357600083815260208290526040902092506118b4565b600081815260208490526040902092505b50806118bf81611bec565b915050611860565b509392505050565b600080602083850312156118e257600080fd5b823567ffffffffffffffff808211156118fa57600080fd5b818501915085601f83011261190e57600080fd5b81358181111561191d57600080fd5b8660208260051b850101111561193257600080fd5b60209290920196919550909350505050565b60006020828403121561195657600080fd5b5035919050565b6001600160a01b038116811461144857600080fd5b60006020828403121561198457600080fd5b81356117ee8161195d565b600080604083850312156119a257600080fd5b82356119ad8161195d565b9150602083013580151581146119c257600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126119f457600080fd5b8135602067ffffffffffffffff80831115611a1157611a116119cd565b8260051b604051601f19603f83011681018181108482111715611a3657611a366119cd565b604052938452858101830193838101925087851115611a5457600080fd5b83870191505b84821015611a7357813583529183019190830190611a5a565b979650505050505050565b60008060008060808587031215611a9457600080fd5b8435611a9f8161195d565b93506020850135925060408501359150606085013567ffffffffffffffff811115611ac957600080fd5b611ad5878288016119e3565b91505092959194509250565b60008060408385031215611af457600080fd5b8235611aff8161195d565b915060208301356119c28161195d565b6020808252825182820181905260009190848201906040850190845b81811015611b4757835183529284019291840191600101611b2b565b50909695505050505050565b600080600060608486031215611b6857600080fd5b8335925060208401359150604084013567ffffffffffffffff811115611b8d57600080fd5b611b99868287016119e3565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611bcb57600080fd5b81516117ee8161195d565b634e487b7160e01b600052601160045260246000fd5b600060018201611bfe57611bfe611bd6565b5060010190565b60006001600160801b03808316818516808303821115611c2757611c27611bd6565b01949350505050565b600067ffffffffffffffff83811690831681811015611c5157611c51611bd6565b039392505050565b600067ffffffffffffffff808316818516808303821115611c2757611c27611bd6565b60008219821115611c8f57611c8f611bd6565b500190565b600082821015611ca657611ca6611bd6565b500390565b6000816000190483118215151615611cc557611cc5611bd6565b500290565b600082611ce757634e487b7160e01b600052601260045260246000fd5b50049056fea264697066735822122043ce64d9043c280c2dd1e8e27c39bca25316bdd6ec299dbcfcc5f258f0c4ac0364736f6c634300080d0033000000000000000000000000e2889645716c27194b75484eb7150f9c9ddd824c000000000000000000000000ed2c0b5fcb32c2ec723cee4d14b5fa056b79fca8
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101985760003560e01c8063a4eeb2ad116100e3578063dddc8d8b1161008c578063f2fde38b11610066578063f2fde38b146103d0578063fb0aec8e146103e3578063fe939afc146103f657600080fd5b8063dddc8d8b14610374578063df7d731514610394578063e4b3f631146103bd57600080fd5b8063cfe08b47116100bd578063cfe08b471461033b578063d6e8847b1461034e578063d8952a491461036157600080fd5b8063a4eeb2ad146102ff578063a694fc3a14610308578063ad79d15d1461031b57600080fd5b806343019c19116101455780638da5cb5b1161011f5780638da5cb5b146102bb5780639114e68b146102cc578063a22cb465146102ec57600080fd5b806343019c1914610275578063715018a6146102a05780637cb64759146102a857600080fd5b8063360fdff211610176578063360fdff2146101d85780633d0a7b35146102555780633e79d1e11461026c57600080fd5b80630d50c1891461019d57806319d481ba146101b25780632e17de78146101c5575b600080fd5b6101b06101ab3660046118cf565b610409565b005b6101b06101c0366004611944565b610754565b6101b06101d3366004611944565b6107b3565b6102206101e6366004611972565b60046020526000908152604090205467ffffffffffffffff80821691600160401b810490911690600160801b90046001600160801b031683565b6040805167ffffffffffffffff94851681529390921660208401526001600160801b0316908201526060015b60405180910390f35b61025e60065481565b60405190815260200161024c565b61025e60075481565b600154610288906001600160a01b031681565b6040516001600160a01b03909116815260200161024c565b6101b0610a64565b6101b06102b6366004611944565b610aca565b6000546001600160a01b0316610288565b61025e6102da366004611972565b60056020526000908152604090205481565b6101b06102fa36600461198f565b610b29565b61025e60085481565b6101b0610316366004611944565b610c07565b61025e610329366004611972565b60096020526000908152604090205481565b600254610288906001600160a01b031681565b61025e61035c366004611a7e565b610ebb565b6101b061036f366004611ae1565b610fd1565b610387610382366004611972565b611059565b60405161024c9190611b0f565b6102886103a2366004611944565b6003602052600090815260409020546001600160a01b031681565b6101b06103cb366004611b53565b611170565b6101b06103de366004611972565b611369565b6101b06103f1366004611944565b61144b565b6101b06104043660046118cf565b6114aa565b8061045b5760405162461bcd60e51b815260206004820152601660248201527f4e6f206d65746174726961647320737570706c6965640000000000000000000060448201526064015b60405180910390fd5b60005b8181101561067957600083838381811061047a5761047a611ba3565b6020908102929092013560008181526003909352604090922054919250506001600160a01b031633146104ef5760405162461bcd60e51b815260206004820152601d60248201527f53656e64657220646f6573206e6f74206f776e206d65746174726961640000006044820152606401610452565b6001546040516331a9108f60e11b81526004810183905230916001600160a01b031690636352211e90602401602060405180830381865afa158015610538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055c9190611bb9565b6001600160a01b0316146105b25760405162461bcd60e51b815260206004820152601460248201527f4d6574617472696164206e6f74207374616b65640000000000000000000000006044820152606401610452565b6000818152600360205260409081902080546001600160a01b031916905560015490516323b872dd60e01b8152306004820152336024820152604481018390526001600160a01b03909116906323b872dd90606401600060405180830381600087803b15801561062157600080fd5b505af1158015610635573d6000803e3d6000fd5b50506040518392503391507f85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd90600090a3508061067181611bec565b91505061045e565b5033600090815260046020526040902080546106a99067ffffffffffffffff80821691600160401b9004166117bb565b815482906010906106cb908490600160801b90046001600160801b0316611c05565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550828290508160000160088282829054906101000a900467ffffffffffffffff166107199190611c30565b82546101009290920a67ffffffffffffffff818102199093169183160217909155825467ffffffffffffffff19164290911617909155505050565b6000546001600160a01b031633146107ae5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610452565b600655565b6000818152600360205260409020546001600160a01b031633146108195760405162461bcd60e51b815260206004820152601d60248201527f53656e64657220646f6573206e6f74206f776e206d65746174726961640000006044820152606401610452565b6001546040516331a9108f60e11b81526004810183905230916001600160a01b031690636352211e90602401602060405180830381865afa158015610862573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108869190611bb9565b6001600160a01b0316146108dc5760405162461bcd60e51b815260206004820152601460248201527f4d6574617472696164206e6f74207374616b65640000000000000000000000006044820152606401610452565b600081815260036020908152604080832080546001600160a01b03191690553383526004909152902080546109259067ffffffffffffffff80821691600160401b9004166117bb565b81548290601090610947908490600160801b90046001600160801b0316611c05565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555060018160000160088282829054906101000a900467ffffffffffffffff166109939190611c30565b82546101009290920a67ffffffffffffffff818102199093169183160217909155825467ffffffffffffffff191642909116178255506001546040516323b872dd60e01b8152306004820152336024820152604481018490526001600160a01b03909116906323b872dd90606401600060405180830381600087803b158015610a1b57600080fd5b505af1158015610a2f573d6000803e3d6000fd5b50506040518492503391507f85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd90600090a35050565b6000546001600160a01b03163314610abe5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610452565b610ac860006117f5565b565b6000546001600160a01b03163314610b245760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610452565b600855565b6000546001600160a01b03163314610b835760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610452565b6001546040517fa22cb4650000000000000000000000000000000000000000000000000000000081526001600160a01b03848116600483015283151560248301529091169063a22cb46590604401600060405180830381600087803b158015610beb57600080fd5b505af1158015610bff573d6000803e3d6000fd5b505050505050565b6000818152600360205260409020546001600160a01b031615610c6c5760405162461bcd60e51b815260206004820152601860248201527f4d657461747269616420616c7265616479207374616b656400000000000000006044820152606401610452565b6001546040516331a9108f60e11b81526004810183905233916001600160a01b031690636352211e90602401602060405180830381865afa158015610cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd99190611bb9565b6001600160a01b031614610d2f5760405162461bcd60e51b815260206004820152601d60248201527f53656e64657220646f6573206e6f74206f776e206d65746174726961640000006044820152606401610452565b600081815260036020908152604080832080546001600160a01b031916339081179091558352600490915290208054610d7c9067ffffffffffffffff80821691600160401b9004166117bb565b81548290601090610d9e908490600160801b90046001600160801b0316611c05565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555060018160000160088282829054906101000a900467ffffffffffffffff16610dea9190611c59565b82546101009290920a67ffffffffffffffff818102199093169183160217909155825467ffffffffffffffff191642909116178255506001546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd90606401600060405180830381600087803b158015610e7257600080fd5b505af1158015610e86573d6000803e3d6000fd5b50506040518492503391507febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a90600090a35050565b6001600160a01b03841660009081526004602090815260408083208151606081018352905467ffffffffffffffff808216808452600160401b8304909116948301859052600160801b9091046001600160801b031692820192909252918391610f23916117bb565b82604001516001600160801b0316610f3b9190611c7c565b845190915015610fc7576040516bffffffffffffffffffffffff193360601b1660208201526034810187905260548101869052600090607401604051602081830303815290604052805190602001209050610f998560085483611845565b8015610fb357503360009081526009602052604090205486145b15610fc557610fc28783611c7c565b91505b505b9695505050505050565b6000546001600160a01b0316331461102b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610452565b600180546001600160a01b039384166001600160a01b03199182161790915560028054929093169116179055565b6001600160a01b0381166000908152600460209081526040808320815160608082018452915467ffffffffffffffff8082168352600160401b82048116958301869052600160801b9091046001600160801b031693820193909352909390929182908111156110ca576110ca6119cd565b6040519080825280602002602001820160405280156110f3578160200160208202803683370190505b5090506000805b610a008111611165576000818152600360205260409020546001600160a01b039081169088168103611152578184848151811061113957611139611ba3565b60209081029190910101528261114e81611bec565b9350505b508061115d81611bec565b9150506110fa565b509095945050505050565b33600090815260046020526040812080549091906111a29067ffffffffffffffff80821691600160401b9004166117bb565b82546111be9190600160801b90046001600160801b0316611c7c565b835190915015611272576040516bffffffffffffffffffffffff193360601b166020820152603481018690526054810185905260009060740160405160208183030381529060405280519060200120905061121c8460085483611845565b801561123657503360009081526009602052604090205485145b15611270576112458683611c7c565b336000908152600960205260408120805492945060019290919061126a908490611c7c565b90915550505b505b81546fffffffffffffffff0000000000000000164267ffffffffffffffff1617825533600090815260056020526040812080548392906112b3908490611c7c565b90915550506002546040517fd01e7c36000000000000000000000000000000000000000000000000000000008152336004820152602481018390526001600160a01b039091169063d01e7c3690604401600060405180830381600087803b15801561131d57600080fd5b505af1158015611331573d6000803e3d6000fd5b50506040518392503391507f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d490600090a35050505050565b6000546001600160a01b031633146113c35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610452565b6001600160a01b03811661143f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610452565b611448816117f5565b50565b6000546001600160a01b031633146114a55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610452565b600755565b806114f75760405162461bcd60e51b815260206004820152601660248201527f4e6f206d65746174726961647320737570706c696564000000000000000000006044820152606401610452565b60005b8181101561171b57600083838381811061151657611516611ba3565b6020908102929092013560008181526003909352604090922054919250506001600160a01b03161561158a5760405162461bcd60e51b815260206004820152601860248201527f4d657461747269616420616c7265616479207374616b656400000000000000006044820152606401610452565b6001546040516331a9108f60e11b81526004810183905233916001600160a01b031690636352211e90602401602060405180830381865afa1580156115d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f79190611bb9565b6001600160a01b03161461164d5760405162461bcd60e51b815260206004820152601d60248201527f53656e64657220646f6573206e6f74206f776e206d65746174726961640000006044820152606401610452565b6000818152600360205260409081902080546001600160a01b0319163390811790915560015491516323b872dd60e01b81526004810191909152306024820152604481018390526001600160a01b03909116906323b872dd90606401600060405180830381600087803b1580156116c357600080fd5b505af11580156116d7573d6000803e3d6000fd5b50506040518392503391507febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a90600090a3508061171381611bec565b9150506114fa565b50336000908152600460205260409020805461174b9067ffffffffffffffff80821691600160401b9004166117bb565b8154829060109061176d908490600160801b90046001600160801b0316611c05565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550828290508160000160088282829054906101000a900467ffffffffffffffff166107199190611c59565b60006007546006548385426117d09190611c94565b6117da9190611cab565b6117e49190611cab565b6117ee9190611cca565b9392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600082611852858461185b565b14949350505050565b600081815b84518110156118c757600085828151811061187d5761187d611ba3565b602002602001015190508083116118a357600083815260208290526040902092506118b4565b600081815260208490526040902092505b50806118bf81611bec565b915050611860565b509392505050565b600080602083850312156118e257600080fd5b823567ffffffffffffffff808211156118fa57600080fd5b818501915085601f83011261190e57600080fd5b81358181111561191d57600080fd5b8660208260051b850101111561193257600080fd5b60209290920196919550909350505050565b60006020828403121561195657600080fd5b5035919050565b6001600160a01b038116811461144857600080fd5b60006020828403121561198457600080fd5b81356117ee8161195d565b600080604083850312156119a257600080fd5b82356119ad8161195d565b9150602083013580151581146119c257600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126119f457600080fd5b8135602067ffffffffffffffff80831115611a1157611a116119cd565b8260051b604051601f19603f83011681018181108482111715611a3657611a366119cd565b604052938452858101830193838101925087851115611a5457600080fd5b83870191505b84821015611a7357813583529183019190830190611a5a565b979650505050505050565b60008060008060808587031215611a9457600080fd5b8435611a9f8161195d565b93506020850135925060408501359150606085013567ffffffffffffffff811115611ac957600080fd5b611ad5878288016119e3565b91505092959194509250565b60008060408385031215611af457600080fd5b8235611aff8161195d565b915060208301356119c28161195d565b6020808252825182820181905260009190848201906040850190845b81811015611b4757835183529284019291840191600101611b2b565b50909695505050505050565b600080600060608486031215611b6857600080fd5b8335925060208401359150604084013567ffffffffffffffff811115611b8d57600080fd5b611b99868287016119e3565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611bcb57600080fd5b81516117ee8161195d565b634e487b7160e01b600052601160045260246000fd5b600060018201611bfe57611bfe611bd6565b5060010190565b60006001600160801b03808316818516808303821115611c2757611c27611bd6565b01949350505050565b600067ffffffffffffffff83811690831681811015611c5157611c51611bd6565b039392505050565b600067ffffffffffffffff808316818516808303821115611c2757611c27611bd6565b60008219821115611c8f57611c8f611bd6565b500190565b600082821015611ca657611ca6611bd6565b500390565b6000816000190483118215151615611cc557611cc5611bd6565b500290565b600082611ce757634e487b7160e01b600052601260045260246000fd5b50049056fea264697066735822122043ce64d9043c280c2dd1e8e27c39bca25316bdd6ec299dbcfcc5f258f0c4ac0364736f6c634300080d0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000e2889645716c27194b75484eb7150f9c9ddd824c000000000000000000000000ed2c0b5fcb32c2ec723cee4d14b5fa056b79fca8
-----Decoded View---------------
Arg [0] : _metatriads (address): 0xE2889645716C27194B75484eb7150f9c9Ddd824c
Arg [1] : _tria (address): 0xed2c0b5FcB32C2eC723CEe4D14B5fA056b79FCa8
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000e2889645716c27194b75484eb7150f9c9ddd824c
Arg [1] : 000000000000000000000000ed2c0b5fcb32c2ec723cee4d14b5fa056b79fca8
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.