More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,385 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 21252374 | 2 hrs ago | IN | 0 ETH | 0.00147181 | ||||
Withdraw | 21251868 | 4 hrs ago | IN | 0 ETH | 0.00258291 | ||||
Withdraw | 21221637 | 4 days ago | IN | 0 ETH | 0.00128955 | ||||
Withdraw | 21204143 | 6 days ago | IN | 0 ETH | 0.00123152 | ||||
Withdraw | 21195872 | 7 days ago | IN | 0 ETH | 0.00164348 | ||||
Withdraw | 21192723 | 8 days ago | IN | 0 ETH | 0.00160349 | ||||
Withdraw | 21141566 | 15 days ago | IN | 0 ETH | 0.00105083 | ||||
Withdraw | 21129774 | 17 days ago | IN | 0 ETH | 0.00199874 | ||||
Withdraw | 21114893 | 19 days ago | IN | 0 ETH | 0.00034483 | ||||
Withdraw | 21114889 | 19 days ago | IN | 0 ETH | 0.00066814 | ||||
Withdraw | 21007982 | 34 days ago | IN | 0 ETH | 0.00149612 | ||||
Withdraw | 21001891 | 35 days ago | IN | 0 ETH | 0.00082068 | ||||
Withdraw | 20945055 | 42 days ago | IN | 0 ETH | 0.00141079 | ||||
Withdraw | 20896028 | 49 days ago | IN | 0 ETH | 0.00047767 | ||||
Withdraw | 20855322 | 55 days ago | IN | 0 ETH | 0.00088527 | ||||
Withdraw | 20848775 | 56 days ago | IN | 0 ETH | 0.00064735 | ||||
Withdraw | 20725304 | 73 days ago | IN | 0 ETH | 0.00016454 | ||||
Withdraw | 20664984 | 82 days ago | IN | 0 ETH | 0.0006726 | ||||
Withdraw | 20565434 | 95 days ago | IN | 0 ETH | 0.00018416 | ||||
Withdraw | 20531420 | 100 days ago | IN | 0 ETH | 0.00016691 | ||||
Withdraw | 20520855 | 102 days ago | IN | 0 ETH | 0.00070705 | ||||
Withdraw | 20491432 | 106 days ago | IN | 0 ETH | 0.0011728 | ||||
Withdraw | 20454852 | 111 days ago | IN | 0 ETH | 0.00011511 | ||||
Withdraw | 20411677 | 117 days ago | IN | 0 ETH | 0.00028703 | ||||
Withdraw | 20354490 | 125 days ago | IN | 0 ETH | 0.00027421 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Unipool
Compiler Version
v0.8.23+commit.f704f362
Optimization Enabled:
No with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.23; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; contract LPTokenWrapper { using SafeERC20 for IERC20; IERC20 public dusk; uint256 private _totalSupply; mapping(address => uint256) private _balances; constructor(IERC20 _dusk) { dusk = _dusk; } function totalSupply() public view returns (uint256) { return _totalSupply; } function balanceOf(address account) public view returns (uint256) { return _balances[account]; } function stake(uint256 amount, string calldata duskAddress) public virtual { _totalSupply += amount; _balances[msg.sender] += amount; dusk.safeTransferFrom(msg.sender, address(this), amount); } function withdraw(uint256 amount) public virtual { _totalSupply -= amount; _balances[msg.sender] -= amount; dusk.safeTransfer(msg.sender, amount); } } contract Unipool is LPTokenWrapper { using SafeERC20 for IERC20; bool public stakingPeriodInitialized = false; address public owner; uint256 public constant DURATION = 43 days; uint256 public periodFinish = 0; uint256 public rewardRate = 0; uint256 public lastUpdateTime; uint256 public rewardPerTokenStored; mapping(address => uint256) public userRewardPerTokenPaid; mapping(address => uint256) public rewards; event StakingPeriodInitialized(); event Staked(address indexed user, uint256 amount, string duskAddress); event Withdrawn(address indexed user, uint256 amount); modifier onlyOwner() { require(msg.sender == owner, "Only owner"); _; } modifier updateReward(address account) { rewardPerTokenStored = rewardPerToken(); lastUpdateTime = lastTimeRewardApplicable(); if (account != address(0)) { rewards[account] = earned(account); userRewardPerTokenPaid[account] = rewardPerTokenStored; } _; } constructor(IERC20 _dusk) LPTokenWrapper(_dusk) { owner = msg.sender; } function lastTimeRewardApplicable() public view returns (uint256) { return min(block.timestamp, periodFinish); } function rewardPerToken() public view returns (uint256) { if (totalSupply() == 0) { return rewardPerTokenStored; } return rewardPerTokenStored + ((lastTimeRewardApplicable() - lastUpdateTime) * rewardRate * 1e18) / totalSupply(); } function earned(address account) public view returns (uint256) { return ((balanceOf(account) * (rewardPerToken() - userRewardPerTokenPaid[account])) / 1e18) + rewards[account]; } // stake visibility is public as overriding LPTokenWrapper's stake() function function stake( uint256 amount, string calldata duskAddress ) public override updateReward(msg.sender) { require(amount > 0, "Cannot stake 0"); super.stake(amount, duskAddress); emit Staked(msg.sender, amount, duskAddress); } function withdraw(uint256 amount) public override updateReward(msg.sender) { require(amount > 0, "Cannot withdraw 0"); super.withdraw(amount); emit Withdrawn(msg.sender, amount); } function initializeStakingPeriod() external onlyOwner { require(!stakingPeriodInitialized, "Staking already initialized"); uint256 fixedReward = 2_500_000 * 1e18; rewardRate = fixedReward / DURATION; lastUpdateTime = block.timestamp; periodFinish = block.timestamp + DURATION; stakingPeriodInitialized = true; emit StakingPeriodInitialized(); } function min(uint256 a, uint256 b) internal pure returns (uint256) { return a < b ? a : b; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Permit.sol) pragma solidity ^0.8.20; /** * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. * * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't * need to send a transaction, and thus is not required to hold Ether at all. * * ==== Security Considerations * * There are two important considerations concerning the use of `permit`. The first is that a valid permit signature * expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be * considered as an intention to spend the allowance in any specific way. The second is that because permits have * built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should * take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be * generally recommended is: * * ```solidity * function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public { * try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {} * doThing(..., value); * } * * function doThing(..., uint256 value) public { * token.safeTransferFrom(msg.sender, address(this), value); * ... * } * ``` * * Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of * `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also * {SafeERC20-safeTransferFrom}). * * Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so * contracts should have entry points that don't rely on permit. */ interface IERC20Permit { /** * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens, * given ``owner``'s signed approval. * * IMPORTANT: The same issues {IERC20-approve} has related to transaction * ordering also apply here. * * Emits an {Approval} event. * * Requirements: * * - `spender` cannot be the zero address. * - `deadline` must be a timestamp in the future. * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` * over the EIP712-formatted function arguments. * - the signature must use ``owner``'s current nonce (see {nonces}). * * For more information on the signature format, see the * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP * section]. * * CAUTION: See Security Considerations above. */ function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; /** * @dev Returns the current nonce for `owner`. This value must be * included whenever a signature is generated for {permit}. * * Every successful call to {permit} increases ``owner``'s nonce by one. This * prevents a signature from being used multiple times. */ function nonces(address owner) external view returns (uint256); /** * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}. */ // solhint-disable-next-line func-name-mixedcase function DOMAIN_SEPARATOR() external view returns (bytes32); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.20; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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); /** * @dev Returns the value of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the value of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves a `value` amount of 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 value) 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 a `value` amount of tokens 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 value) external returns (bool); /** * @dev Moves a `value` amount of tokens from `from` to `to` using the * allowance mechanism. `value` 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 value) external returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/utils/SafeERC20.sol) pragma solidity ^0.8.20; import {IERC20} from "../IERC20.sol"; import {IERC20Permit} from "../extensions/IERC20Permit.sol"; import {Address} from "../../../utils/Address.sol"; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using Address for address; /** * @dev An operation with an ERC20 token failed. */ error SafeERC20FailedOperation(address token); /** * @dev Indicates a failed `decreaseAllowance` request. */ error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease); /** * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value, * non-reverting calls are assumed to be successful. */ function safeTransfer(IERC20 token, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value))); } /** * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful. */ function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value))); } /** * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value, * non-reverting calls are assumed to be successful. */ function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 oldAllowance = token.allowance(address(this), spender); forceApprove(token, spender, oldAllowance + value); } /** * @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no * value, non-reverting calls are assumed to be successful. */ function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal { unchecked { uint256 currentAllowance = token.allowance(address(this), spender); if (currentAllowance < requestedDecrease) { revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease); } forceApprove(token, spender, currentAllowance - requestedDecrease); } } /** * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value, * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval * to be set to zero before setting it to a non-zero value, such as USDT. */ function forceApprove(IERC20 token, address spender, uint256 value) internal { bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value)); if (!_callOptionalReturnBool(token, approvalCall)) { _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0))); _callOptionalReturn(token, approvalCall); } } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data); if (returndata.length != 0 && !abi.decode(returndata, (bool))) { revert SafeERC20FailedOperation(address(token)); } } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). * * This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead. */ function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We cannot use {Address-functionCall} here since this should return false // and not revert is the subcall reverts. (bool success, bytes memory returndata) = address(token).call(data); return success && (returndata.length == 0 || abi.decode(returndata, (bool))) && address(token).code.length > 0; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol) pragma solidity ^0.8.20; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev The ETH balance of the account is not enough to perform the operation. */ error AddressInsufficientBalance(address account); /** * @dev There's no code at `target` (it is not a contract). */ error AddressEmptyCode(address target); /** * @dev A call to an address target failed. The target may have reverted. */ error FailedInnerCall(); /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { if (address(this).balance < amount) { revert AddressInsufficientBalance(address(this)); } (bool success, ) = recipient.call{value: amount}(""); if (!success) { revert FailedInnerCall(); } } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason or custom error, it is bubbled * up by this function (like regular Solidity function calls). However, if * the call reverted with no returned reason, this function reverts with a * {FailedInnerCall} error. * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { if (address(this).balance < value) { revert AddressInsufficientBalance(address(this)); } (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an * unsuccessful call. */ function verifyCallResultFromTarget( address target, bool success, bytes memory returndata ) internal view returns (bytes memory) { if (!success) { _revert(returndata); } else { // only check if target is a contract if the call was successful and the return data is empty // otherwise we already know that it was a contract if (returndata.length == 0 && target.code.length == 0) { revert AddressEmptyCode(target); } return returndata; } } /** * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the * revert reason or with a default {FailedInnerCall} error. */ function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) { if (!success) { _revert(returndata); } else { return returndata; } } /** * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}. */ function _revert(bytes memory returndata) private pure { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert FailedInnerCall(); } } }
{ "evmVersion": "paris", "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IERC20","name":"_dusk","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"string","name":"duskAddress","type":"string"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[],"name":"StakingPeriodInitialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dusk","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"earned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initializeStakingPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastTimeRewardApplicable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastUpdateTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodFinish","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardPerTokenStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"string","name":"duskAddress","type":"string"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingPeriodInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userRewardPerTokenPaid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526000600360006101000a81548160ff021916908315150217905550600060045560006005553480156200003657600080fd5b506040516200186b3803806200186b83398181016040528101906200005c919062000164565b80806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000196565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200011882620000eb565b9050919050565b60006200012c826200010b565b9050919050565b6200013e816200011f565b81146200014a57600080fd5b50565b6000815190506200015e8162000133565b92915050565b6000602082840312156200017d576200017c620000e6565b5b60006200018d848285016200014d565b91505092915050565b6116c580620001a66000396000f3fe608060405234801561001057600080fd5b50600436106101155760003560e01c80638da5cb5b116100a2578063c8f33c9111610071578063c8f33c91146102d2578063cd3daf9d146102f0578063df136d651461030e578063e7e4e1f71461032c578063ebe2b12b1461034857610115565b80638da5cb5b1461026e578063a9f619ff1461028c578063b284d235146102aa578063bb1f9dfc146102b457610115565b80632e1a7d4d116100e95780632e1a7d4d146101b657806370a08231146101d25780637b0a47ee1461020257806380faa57d146102205780638b8763471461023e57610115565b80628cc2621461011a5780630700037d1461014a57806318160ddd1461017a5780631be0528914610198575b600080fd5b610134600480360381019061012f9190610f7c565b610366565b6040516101419190610fc2565b60405180910390f35b610164600480360381019061015f9190610f7c565b610431565b6040516101719190610fc2565b60405180910390f35b610182610449565b60405161018f9190610fc2565b60405180910390f35b6101a0610453565b6040516101ad9190610fc2565b60405180910390f35b6101d060048036038101906101cb9190611009565b61045a565b005b6101ec60048036038101906101e79190610f7c565b6105dc565b6040516101f99190610fc2565b60405180910390f35b61020a610625565b6040516102179190610fc2565b60405180910390f35b61022861062b565b6040516102359190610fc2565b60405180910390f35b61025860048036038101906102539190610f7c565b61063e565b6040516102659190610fc2565b60405180910390f35b610276610656565b6040516102839190611045565b60405180910390f35b61029461067c565b6040516102a1919061107b565b60405180910390f35b6102b261068f565b005b6102bc6107fa565b6040516102c991906110f5565b60405180910390f35b6102da61081e565b6040516102e79190610fc2565b60405180910390f35b6102f8610824565b6040516103059190610fc2565b60405180910390f35b610316610898565b6040516103239190610fc2565b60405180910390f35b61034660048036038101906103419190611175565b61089e565b005b610350610a28565b60405161035d9190610fc2565b60405180910390f35b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054670de0b6b3a7640000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546103f9610824565b6104039190611204565b61040c856105dc565b6104169190611238565b61042091906112a9565b61042a91906112da565b9050919050565b60096020528060005260406000206000915090505481565b6000600154905090565b6238b08081565b33610463610824565b60078190555061047161062b565b600681905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461053e576104b481610366565b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600754600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60008211610581576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105789061136b565b60405180910390fd5b61058a82610a2e565b3373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5836040516105d09190610fc2565b60405180910390a25050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60055481565b600061063942600454610aeb565b905090565b60086020528060005260406000206000915090505481565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900460ff1681565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461071f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610716906113d7565b60405180910390fd5b600360009054906101000a900460ff161561076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076690611443565b60405180910390fd5b60006a021165458500521280000090506238b0808161078e91906112a9565b600581905550426006819055506238b080426107aa91906112da565b6004819055506001600360006101000a81548160ff0219169083151502179055507f426e963e9c38f0e1c04d3265185fb5fb22361197a5606bc44ff0ae5a94843faf60405160405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b60008061082f610449565b0361083e576007549050610895565b610846610449565b670de0b6b3a764000060055460065461085d61062b565b6108679190611204565b6108719190611238565b61087b9190611238565b61088591906112a9565b60075461089291906112da565b90505b90565b60075481565b336108a7610824565b6007819055506108b561062b565b600681905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610982576108f881610366565b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600754600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600084116109c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bc906114af565b60405180910390fd5b6109d0848484610b04565b3373ffffffffffffffffffffffffffffffffffffffff167f78a806bb7699c94c8bf510c6ae4c7d16f8a7465865bee03d1a5d2c572f7c128b858585604051610a1a9392919061151c565b60405180910390a250505050565b60045481565b8060016000828254610a409190611204565b9250508190555080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610a969190611204565b92505081905550610ae8338260008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bc59092919063ffffffff16565b50565b6000818310610afa5781610afc565b825b905092915050565b8260016000828254610b1691906112da565b9250508190555082600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b6c91906112da565b92505081905550610bc033308560008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c44909392919063ffffffff16565b505050565b610c3f838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401610bf892919061154e565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610cc6565b505050565b610cc0848573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401610c7993929190611577565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610cc6565b50505050565b6000610cf1828473ffffffffffffffffffffffffffffffffffffffff16610d5d90919063ffffffff16565b90506000815114158015610d16575080806020019051810190610d1491906115da565b155b15610d5857826040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401610d4f9190611045565b60405180910390fd5b505050565b6060610d6b83836000610d73565b905092915050565b606081471015610dba57306040517fcd786059000000000000000000000000000000000000000000000000000000008152600401610db19190611045565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610de39190611678565b60006040518083038185875af1925050503d8060008114610e20576040519150601f19603f3d011682016040523d82523d6000602084013e610e25565b606091505b5091509150610e35868383610e40565b925050509392505050565b606082610e5557610e5082610ecf565b610ec7565b60008251148015610e7d575060008473ffffffffffffffffffffffffffffffffffffffff163b145b15610ebf57836040517f9996b315000000000000000000000000000000000000000000000000000000008152600401610eb69190611045565b60405180910390fd5b819050610ec8565b5b9392505050565b600081511115610ee25780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610f4982610f1e565b9050919050565b610f5981610f3e565b8114610f6457600080fd5b50565b600081359050610f7681610f50565b92915050565b600060208284031215610f9257610f91610f14565b5b6000610fa084828501610f67565b91505092915050565b6000819050919050565b610fbc81610fa9565b82525050565b6000602082019050610fd76000830184610fb3565b92915050565b610fe681610fa9565b8114610ff157600080fd5b50565b60008135905061100381610fdd565b92915050565b60006020828403121561101f5761101e610f14565b5b600061102d84828501610ff4565b91505092915050565b61103f81610f3e565b82525050565b600060208201905061105a6000830184611036565b92915050565b60008115159050919050565b61107581611060565b82525050565b6000602082019050611090600083018461106c565b92915050565b6000819050919050565b60006110bb6110b66110b184610f1e565b611096565b610f1e565b9050919050565b60006110cd826110a0565b9050919050565b60006110df826110c2565b9050919050565b6110ef816110d4565b82525050565b600060208201905061110a60008301846110e6565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261113557611134611110565b5b8235905067ffffffffffffffff81111561115257611151611115565b5b60208301915083600182028301111561116e5761116d61111a565b5b9250929050565b60008060006040848603121561118e5761118d610f14565b5b600061119c86828701610ff4565b935050602084013567ffffffffffffffff8111156111bd576111bc610f19565b5b6111c98682870161111f565b92509250509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061120f82610fa9565b915061121a83610fa9565b9250828203905081811115611232576112316111d5565b5b92915050565b600061124382610fa9565b915061124e83610fa9565b925082820261125c81610fa9565b91508282048414831517611273576112726111d5565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006112b482610fa9565b91506112bf83610fa9565b9250826112cf576112ce61127a565b5b828204905092915050565b60006112e582610fa9565b91506112f083610fa9565b9250828201905080821115611308576113076111d5565b5b92915050565b600082825260208201905092915050565b7f43616e6e6f742077697468647261772030000000000000000000000000000000600082015250565b600061135560118361130e565b91506113608261131f565b602082019050919050565b6000602082019050818103600083015261138481611348565b9050919050565b7f4f6e6c79206f776e657200000000000000000000000000000000000000000000600082015250565b60006113c1600a8361130e565b91506113cc8261138b565b602082019050919050565b600060208201905081810360008301526113f0816113b4565b9050919050565b7f5374616b696e6720616c726561647920696e697469616c697a65640000000000600082015250565b600061142d601b8361130e565b9150611438826113f7565b602082019050919050565b6000602082019050818103600083015261145c81611420565b9050919050565b7f43616e6e6f74207374616b652030000000000000000000000000000000000000600082015250565b6000611499600e8361130e565b91506114a482611463565b602082019050919050565b600060208201905081810360008301526114c88161148c565b9050919050565b82818337600083830152505050565b6000601f19601f8301169050919050565b60006114fb838561130e565b93506115088385846114cf565b611511836114de565b840190509392505050565b60006040820190506115316000830186610fb3565b81810360208301526115448184866114ef565b9050949350505050565b60006040820190506115636000830185611036565b6115706020830184610fb3565b9392505050565b600060608201905061158c6000830186611036565b6115996020830185611036565b6115a66040830184610fb3565b949350505050565b6115b781611060565b81146115c257600080fd5b50565b6000815190506115d4816115ae565b92915050565b6000602082840312156115f0576115ef610f14565b5b60006115fe848285016115c5565b91505092915050565b600081519050919050565b600081905092915050565b60005b8381101561163b578082015181840152602081019050611620565b60008484015250505050565b600061165282611607565b61165c8185611612565b935061166c81856020860161161d565b80840191505092915050565b60006116848284611647565b91508190509291505056fea264697066735822122022f6d682861403e24b389eb037059cb600de7fc6dc89b1afe0f3fbca8cc16cd164736f6c63430008170033000000000000000000000000940a2db1b7008b6c776d4faaca729d6d4a4aa551
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101155760003560e01c80638da5cb5b116100a2578063c8f33c9111610071578063c8f33c91146102d2578063cd3daf9d146102f0578063df136d651461030e578063e7e4e1f71461032c578063ebe2b12b1461034857610115565b80638da5cb5b1461026e578063a9f619ff1461028c578063b284d235146102aa578063bb1f9dfc146102b457610115565b80632e1a7d4d116100e95780632e1a7d4d146101b657806370a08231146101d25780637b0a47ee1461020257806380faa57d146102205780638b8763471461023e57610115565b80628cc2621461011a5780630700037d1461014a57806318160ddd1461017a5780631be0528914610198575b600080fd5b610134600480360381019061012f9190610f7c565b610366565b6040516101419190610fc2565b60405180910390f35b610164600480360381019061015f9190610f7c565b610431565b6040516101719190610fc2565b60405180910390f35b610182610449565b60405161018f9190610fc2565b60405180910390f35b6101a0610453565b6040516101ad9190610fc2565b60405180910390f35b6101d060048036038101906101cb9190611009565b61045a565b005b6101ec60048036038101906101e79190610f7c565b6105dc565b6040516101f99190610fc2565b60405180910390f35b61020a610625565b6040516102179190610fc2565b60405180910390f35b61022861062b565b6040516102359190610fc2565b60405180910390f35b61025860048036038101906102539190610f7c565b61063e565b6040516102659190610fc2565b60405180910390f35b610276610656565b6040516102839190611045565b60405180910390f35b61029461067c565b6040516102a1919061107b565b60405180910390f35b6102b261068f565b005b6102bc6107fa565b6040516102c991906110f5565b60405180910390f35b6102da61081e565b6040516102e79190610fc2565b60405180910390f35b6102f8610824565b6040516103059190610fc2565b60405180910390f35b610316610898565b6040516103239190610fc2565b60405180910390f35b61034660048036038101906103419190611175565b61089e565b005b610350610a28565b60405161035d9190610fc2565b60405180910390f35b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054670de0b6b3a7640000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546103f9610824565b6104039190611204565b61040c856105dc565b6104169190611238565b61042091906112a9565b61042a91906112da565b9050919050565b60096020528060005260406000206000915090505481565b6000600154905090565b6238b08081565b33610463610824565b60078190555061047161062b565b600681905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461053e576104b481610366565b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600754600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60008211610581576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105789061136b565b60405180910390fd5b61058a82610a2e565b3373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5836040516105d09190610fc2565b60405180910390a25050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60055481565b600061063942600454610aeb565b905090565b60086020528060005260406000206000915090505481565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900460ff1681565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461071f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610716906113d7565b60405180910390fd5b600360009054906101000a900460ff161561076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076690611443565b60405180910390fd5b60006a021165458500521280000090506238b0808161078e91906112a9565b600581905550426006819055506238b080426107aa91906112da565b6004819055506001600360006101000a81548160ff0219169083151502179055507f426e963e9c38f0e1c04d3265185fb5fb22361197a5606bc44ff0ae5a94843faf60405160405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b60008061082f610449565b0361083e576007549050610895565b610846610449565b670de0b6b3a764000060055460065461085d61062b565b6108679190611204565b6108719190611238565b61087b9190611238565b61088591906112a9565b60075461089291906112da565b90505b90565b60075481565b336108a7610824565b6007819055506108b561062b565b600681905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610982576108f881610366565b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600754600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600084116109c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bc906114af565b60405180910390fd5b6109d0848484610b04565b3373ffffffffffffffffffffffffffffffffffffffff167f78a806bb7699c94c8bf510c6ae4c7d16f8a7465865bee03d1a5d2c572f7c128b858585604051610a1a9392919061151c565b60405180910390a250505050565b60045481565b8060016000828254610a409190611204565b9250508190555080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610a969190611204565b92505081905550610ae8338260008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bc59092919063ffffffff16565b50565b6000818310610afa5781610afc565b825b905092915050565b8260016000828254610b1691906112da565b9250508190555082600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b6c91906112da565b92505081905550610bc033308560008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c44909392919063ffffffff16565b505050565b610c3f838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401610bf892919061154e565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610cc6565b505050565b610cc0848573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401610c7993929190611577565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610cc6565b50505050565b6000610cf1828473ffffffffffffffffffffffffffffffffffffffff16610d5d90919063ffffffff16565b90506000815114158015610d16575080806020019051810190610d1491906115da565b155b15610d5857826040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401610d4f9190611045565b60405180910390fd5b505050565b6060610d6b83836000610d73565b905092915050565b606081471015610dba57306040517fcd786059000000000000000000000000000000000000000000000000000000008152600401610db19190611045565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610de39190611678565b60006040518083038185875af1925050503d8060008114610e20576040519150601f19603f3d011682016040523d82523d6000602084013e610e25565b606091505b5091509150610e35868383610e40565b925050509392505050565b606082610e5557610e5082610ecf565b610ec7565b60008251148015610e7d575060008473ffffffffffffffffffffffffffffffffffffffff163b145b15610ebf57836040517f9996b315000000000000000000000000000000000000000000000000000000008152600401610eb69190611045565b60405180910390fd5b819050610ec8565b5b9392505050565b600081511115610ee25780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610f4982610f1e565b9050919050565b610f5981610f3e565b8114610f6457600080fd5b50565b600081359050610f7681610f50565b92915050565b600060208284031215610f9257610f91610f14565b5b6000610fa084828501610f67565b91505092915050565b6000819050919050565b610fbc81610fa9565b82525050565b6000602082019050610fd76000830184610fb3565b92915050565b610fe681610fa9565b8114610ff157600080fd5b50565b60008135905061100381610fdd565b92915050565b60006020828403121561101f5761101e610f14565b5b600061102d84828501610ff4565b91505092915050565b61103f81610f3e565b82525050565b600060208201905061105a6000830184611036565b92915050565b60008115159050919050565b61107581611060565b82525050565b6000602082019050611090600083018461106c565b92915050565b6000819050919050565b60006110bb6110b66110b184610f1e565b611096565b610f1e565b9050919050565b60006110cd826110a0565b9050919050565b60006110df826110c2565b9050919050565b6110ef816110d4565b82525050565b600060208201905061110a60008301846110e6565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261113557611134611110565b5b8235905067ffffffffffffffff81111561115257611151611115565b5b60208301915083600182028301111561116e5761116d61111a565b5b9250929050565b60008060006040848603121561118e5761118d610f14565b5b600061119c86828701610ff4565b935050602084013567ffffffffffffffff8111156111bd576111bc610f19565b5b6111c98682870161111f565b92509250509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061120f82610fa9565b915061121a83610fa9565b9250828203905081811115611232576112316111d5565b5b92915050565b600061124382610fa9565b915061124e83610fa9565b925082820261125c81610fa9565b91508282048414831517611273576112726111d5565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006112b482610fa9565b91506112bf83610fa9565b9250826112cf576112ce61127a565b5b828204905092915050565b60006112e582610fa9565b91506112f083610fa9565b9250828201905080821115611308576113076111d5565b5b92915050565b600082825260208201905092915050565b7f43616e6e6f742077697468647261772030000000000000000000000000000000600082015250565b600061135560118361130e565b91506113608261131f565b602082019050919050565b6000602082019050818103600083015261138481611348565b9050919050565b7f4f6e6c79206f776e657200000000000000000000000000000000000000000000600082015250565b60006113c1600a8361130e565b91506113cc8261138b565b602082019050919050565b600060208201905081810360008301526113f0816113b4565b9050919050565b7f5374616b696e6720616c726561647920696e697469616c697a65640000000000600082015250565b600061142d601b8361130e565b9150611438826113f7565b602082019050919050565b6000602082019050818103600083015261145c81611420565b9050919050565b7f43616e6e6f74207374616b652030000000000000000000000000000000000000600082015250565b6000611499600e8361130e565b91506114a482611463565b602082019050919050565b600060208201905081810360008301526114c88161148c565b9050919050565b82818337600083830152505050565b6000601f19601f8301169050919050565b60006114fb838561130e565b93506115088385846114cf565b611511836114de565b840190509392505050565b60006040820190506115316000830186610fb3565b81810360208301526115448184866114ef565b9050949350505050565b60006040820190506115636000830185611036565b6115706020830184610fb3565b9392505050565b600060608201905061158c6000830186611036565b6115996020830185611036565b6115a66040830184610fb3565b949350505050565b6115b781611060565b81146115c257600080fd5b50565b6000815190506115d4816115ae565b92915050565b6000602082840312156115f0576115ef610f14565b5b60006115fe848285016115c5565b91505092915050565b600081519050919050565b600081905092915050565b60005b8381101561163b578082015181840152602081019050611620565b60008484015250505050565b600061165282611607565b61165c8185611612565b935061166c81856020860161161d565b80840191505092915050565b60006116848284611647565b91508190509291505056fea264697066735822122022f6d682861403e24b389eb037059cb600de7fc6dc89b1afe0f3fbca8cc16cd164736f6c63430008170033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000940a2db1b7008b6c776d4faaca729d6d4a4aa551
-----Decoded View---------------
Arg [0] : _dusk (address): 0x940a2dB1B7008B6C776d4faaCa729d6d4A4AA551
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000940a2db1b7008b6c776d4faaca729d6d4a4aa551
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.211847 | 2,097,699.8321 | $444,391.42 |
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.