More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,126 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 20144156 | 163 days ago | IN | 0 ETH | 0.00025687 | ||||
Withdraw | 17166225 | 581 days ago | IN | 0 ETH | 0.00948125 | ||||
Withdraw | 17122842 | 587 days ago | IN | 0 ETH | 0.00463259 | ||||
Withdraw | 17115213 | 588 days ago | IN | 0 ETH | 0.00415218 | ||||
Withdraw | 17115199 | 588 days ago | IN | 0 ETH | 0.00381319 | ||||
Withdraw | 17109648 | 589 days ago | IN | 0 ETH | 0.00605803 | ||||
Withdraw | 17109636 | 589 days ago | IN | 0 ETH | 0.01818867 | ||||
Withdraw | 17109607 | 589 days ago | IN | 0 ETH | 0.00669949 | ||||
Withdraw | 17109510 | 589 days ago | IN | 0 ETH | 0.0035849 | ||||
Withdraw | 17109476 | 589 days ago | IN | 0 ETH | 0.01164955 | ||||
Withdraw | 17109109 | 589 days ago | IN | 0 ETH | 0.00361286 | ||||
Withdraw | 17109090 | 589 days ago | IN | 0 ETH | 0.00504333 | ||||
Withdraw | 17108624 | 589 days ago | IN | 0 ETH | 0.0060168 | ||||
Withdraw | 17108155 | 589 days ago | IN | 0 ETH | 0.00605402 | ||||
Withdraw | 17108067 | 589 days ago | IN | 0 ETH | 0.00460093 | ||||
Withdraw | 17108007 | 589 days ago | IN | 0 ETH | 0.01122948 | ||||
Withdraw | 17107926 | 589 days ago | IN | 0 ETH | 0.0058715 | ||||
Withdraw | 17107901 | 589 days ago | IN | 0 ETH | 0.00322799 | ||||
Withdraw | 17107881 | 589 days ago | IN | 0 ETH | 0.004835 | ||||
Withdraw | 17107449 | 589 days ago | IN | 0 ETH | 0.0038729 | ||||
Withdraw | 17106967 | 589 days ago | IN | 0 ETH | 0.00473338 | ||||
Withdraw | 17106845 | 589 days ago | IN | 0 ETH | 0.01293837 | ||||
Withdraw | 17106824 | 589 days ago | IN | 0 ETH | 0.00457092 | ||||
Withdraw | 17106814 | 589 days ago | IN | 0 ETH | 0.01193357 | ||||
Withdraw | 17106780 | 589 days ago | IN | 0 ETH | 0.00482106 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
VoidStakeV2
Compiler Version
v0.8.16+commit.07a7930e
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.16; /** website: https://void.cash/ twitter: https://twitter.com/voidcasherc telegram: https://t.me/voidcashportal medium: https://medium.com/@voidcash prepare to enter the ██╗ ██╗ ██████╗ ██╗██████╗ ██║ ██║██╔═══██╗██║██╔══██╗ ██║ ██║██║ ██║██║██║ ██║ ╚██╗ ██╔╝██║ ██║██║██║ ██║ ╚████╔╝ ╚██████╔╝██║██████╔╝ ╚═══╝ ╚═════╝ ╚═╝╚═════╝ */ import "openzeppelin/token/ERC20/IERC20.sol"; import "openzeppelin/access/Ownable.sol"; import "./IMintableERC20.sol"; contract VoidStakeV2 is Ownable { /* -------------------------------------------------------------------------- */ /* errors */ /* -------------------------------------------------------------------------- */ error ZeroStakeAmount(); error ZeroWithdrawAmount(); error InvalidWithdrawAmount(); /* -------------------------------------------------------------------------- */ /* events */ /* -------------------------------------------------------------------------- */ event VoidStaked(address indexed account, uint256 amount); event VoidWithdraw(address indexed account, uint256 amount); event VoidClaimed(address indexed account, uint256 amount); event RewardRateChanged(uint256 rewardRate); /* -------------------------------------------------------------------------- */ /* public states */ /* -------------------------------------------------------------------------- */ address public immutable stakingTokenAddress; address public immutable rewardTokenAddress; uint256 public immutable rewardStartTime; uint256 public rewardRate = 1e13; // 0.00001 ether per second (0.864 ether per day) mapping(address => uint256) public userStakedAmount; uint256 public totalStaked; /* -------------------------------------------------------------------------- */ /* private states */ /* -------------------------------------------------------------------------- */ uint256 private lastUpdatedAt; uint256 private currentRewardPerTokenE18; mapping(address => uint256) private userLastRewardPerToken; mapping(address => uint256) private userClaimableRewardTokens; /* -------------------------------------------------------------------------- */ /* constructor */ /* -------------------------------------------------------------------------- */ constructor(address _s, address _r) { stakingTokenAddress = _s; rewardTokenAddress = _r; // V1 startBlock: 15561017, timestamp: 1663511195 // V1 endBlock: 15665460, timestamp: 1664773943 // difference: 1262748 rewardStartTime = block.timestamp - 1262748; } /* -------------------------------------------------------------------------- */ /* modifiers */ /* -------------------------------------------------------------------------- */ modifier updateRewardVariables(address account) { // calculate current rewardPerToken uint256 _currentRewardPerToken = calculateRewardPerTokenE18(); // update currentRewardPerToken currentRewardPerTokenE18 = _currentRewardPerToken; // update lastUpdatedAt lastUpdatedAt = block.timestamp; // update userClaimableRewardTokens for user userClaimableRewardTokens[account] = calculateClaimableRewardTokens(account, _currentRewardPerToken); // update userLastRewardPerToken for user userLastRewardPerToken[account] = _currentRewardPerToken; _; } /* -------------------------------------------------------------------------- */ /* views */ /* -------------------------------------------------------------------------- */ function claimableRewardTokens(address account) public view returns (uint256) { uint256 _currentRewardPerToken = calculateRewardPerTokenE18(); return calculateClaimableRewardTokens(account, _currentRewardPerToken); } /* -------------------------------------------------------------------------- */ /* external */ /* -------------------------------------------------------------------------- */ function stake(uint256 amount) external updateRewardVariables(msg.sender) { // check amount if (amount == 0) { revert ZeroStakeAmount(); } // transfer IERC20(stakingTokenAddress).transferFrom(msg.sender, address(this), amount); // update variables totalStaked += amount; userStakedAmount[msg.sender] += amount; // event emit VoidStaked(msg.sender, amount); } function withdraw(uint256 amount) external updateRewardVariables(msg.sender) { // check amount if (amount == 0) { revert ZeroWithdrawAmount(); } if (amount > userStakedAmount[msg.sender]) { revert InvalidWithdrawAmount(); } // transfer IERC20(stakingTokenAddress).transfer(msg.sender, amount); // update variables totalStaked -= amount; userStakedAmount[msg.sender] -= amount; // event emit VoidWithdraw(msg.sender, amount); } function claim() external updateRewardVariables(msg.sender) { // get reward uint256 reward = userClaimableRewardTokens[msg.sender]; // do nothing if (reward == 0) { return; } // send reward userClaimableRewardTokens[msg.sender] = 0; IMintableERC20(rewardTokenAddress).mint(msg.sender, reward); // event emit VoidClaimed(msg.sender, reward); } /* -------------------------------------------------------------------------- */ /* private */ /* -------------------------------------------------------------------------- */ function calculateRewardPerTokenE18() private view returns (uint256) { // none staked if (totalStaked == 0) { return currentRewardPerTokenE18; } // cumulative reward per token // scaled by 1e18, otherwise rewards may go into the fractions and be erased return currentRewardPerTokenE18 + (rewardRate * (block.timestamp - lastUpdatedAt) * 1e18) / totalStaked; } function calculateClaimableRewardTokens(address account, uint256 _currentRewardPerToken) private view returns (uint256) { // undo the scaling by 1e18 performed in `calculateRewardPerTokenE18` return userClaimableRewardTokens[account] + userStakedAmount[account] * (_currentRewardPerToken - userLastRewardPerToken[account]) / 1e18; } /* -------------------------------------------------------------------------- */ /* owners */ /* -------------------------------------------------------------------------- */ function setRewardRate(uint256 _rewardRate) external onlyOwner { rewardRate = _rewardRate; emit RewardRateChanged(_rewardRate); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @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 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); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.16; import "openzeppelin/token/ERC20/IERC20.sol"; interface IMintableERC20 is IERC20 { function mint(address to, uint256 amount) external; }
// 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; } }
{ "remappings": [ "ds-test/=lib/forge-std/lib/ds-test/src/", "forge-std/=lib/forge-std/src/", "openzeppelin/=lib/openzeppelin-contracts/contracts/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "bytecodeHash": "ipfs" }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "london", "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_s","type":"address"},{"internalType":"address","name":"_r","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidWithdrawAmount","type":"error"},{"inputs":[],"name":"ZeroStakeAmount","type":"error"},{"inputs":[],"name":"ZeroWithdrawAmount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"rewardRate","type":"uint256"}],"name":"RewardRateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"VoidClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"VoidStaked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"VoidWithdraw","type":"event"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"claimableRewardTokens","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rewardRate","type":"uint256"}],"name":"setRewardRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userStakedAmount","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
60e06040526509184e72a00060015534801561001a57600080fd5b50604051610b84380380610b84833981016040819052610039916100d9565b6100423361006d565b6001600160a01b03808316608052811660a0526100626213449c4261010c565b60c052506101339050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146100d457600080fd5b919050565b600080604083850312156100ec57600080fd5b6100f5836100bd565b9150610103602084016100bd565b90509250929050565b8181038181111561012d57634e487b7160e01b600052601160045260246000fd5b92915050565b60805160a05160c051610a0e610176600039600061015901526000818160f4015261049801526000818161019d0152818161031601526106080152610a0e6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80637b0a47ee1161008c5780638e4647ee116100665780638e4647ee146101ea5780639e447fc61461020a578063a694fc3a1461021d578063f2fde38b1461023057600080fd5b80637b0a47ee146101c7578063817b1cd2146101d05780638da5cb5b146101d957600080fd5b80632e1a7d4d116100c85780632e1a7d4d1461017b5780634e71d92d146101905780635298b86914610198578063715018a6146101bf57600080fd5b8063125f9e33146100ef57806319b33eb3146101335780632cc138be14610154575b600080fd5b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6101466101413660046108f7565b610243565b60405190815260200161012a565b6101467f000000000000000000000000000000000000000000000000000000000000000081565b61018e610189366004610920565b610261565b005b61018e610402565b6101167f000000000000000000000000000000000000000000000000000000000000000081565b61018e610526565b61014660015481565b61014660035481565b6000546001600160a01b0316610116565b6101466101f83660046108f7565b60026020526000908152604090205481565b61018e610218366004610920565b61053a565b61018e61022b366004610920565b61057d565b61018e61023e3660046108f7565b6106eb565b60008061024e610769565b905061025a83826107c7565b9392505050565b33600061026c610769565b600581905542600455905061028182826107c7565b6001600160a01b038316600090815260076020908152604080832093909355600690529081208290558390036102ca5760405163d6d9e66560e01b815260040160405180910390fd5b336000908152600260205260409020548311156102fa57604051630db73cdf60e41b815260040160405180910390fd5b60405163a9059cbb60e01b8152336004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015610367573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038b9190610939565b50826003600082825461039e9190610971565b909155505033600090815260026020526040812080548592906103c2908490610971565b909155505060405183815233907f9ae365bc224c29b9dfc7abde7159ff44e51022629f89e826f84c65ba548c4b6f906020015b60405180910390a2505050565b33600061040d610769565b600581905542600455905061042282826107c7565b6001600160a01b0383166000908152600760208181526040808420949094556006815283832085905533835252908120549081900361046057505050565b3360008181526007602052604080822091909155516340c10f1960e01b81526004810191909152602481018290526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340c10f1990604401600060405180830381600087803b1580156104dc57600080fd5b505af11580156104f0573d6000803e3d6000fd5b50506040518381523392507f91ae3543968680693578950bd4bcf94665deafb79635a44064c21fefec0f8f5c91506020016103f5565b61052e61084d565b61053860006108a7565b565b61054261084d565b60018190556040518181527f1e3be2efa25bca5bff2215c7b30b31086e703d6aa7d9b9a1f8ba62c5291219ad9060200160405180910390a150565b336000610588610769565b600581905542600455905061059d82826107c7565b6001600160a01b038316600090815260076020908152604080832093909355600690529081208290558390036105e65760405163f69a94d360e01b815260040160405180910390fd5b6040516323b872dd60e01b8152336004820152306024820152604481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067d9190610939565b5082600360008282546106909190610984565b909155505033600090815260026020526040812080548592906106b4908490610984565b909155505060405183815233907f440037eff5bc42ac4fa37a7bf3a2738689f3ca987cb8c286dd634283e39af54b906020016103f5565b6106f361084d565b6001600160a01b03811661075d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b610766816108a7565b50565b600060035460000361077c575060055490565b60035460045461078c9042610971565b6001546107999190610997565b6107ab90670de0b6b3a7640000610997565b6107b591906109b6565b6005546107c29190610984565b905090565b6001600160a01b038216600090815260066020526040812054670de0b6b3a7640000906107f49084610971565b6001600160a01b0385166000908152600260205260409020546108179190610997565b61082191906109b6565b6001600160a01b0384166000908152600760205260409020546108449190610984565b90505b92915050565b6000546001600160a01b031633146105385760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610754565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561090957600080fd5b81356001600160a01b038116811461025a57600080fd5b60006020828403121561093257600080fd5b5035919050565b60006020828403121561094b57600080fd5b8151801515811461025a57600080fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156108475761084761095b565b808201808211156108475761084761095b565b60008160001904831182151516156109b1576109b161095b565b500290565b6000826109d357634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220fa7e61bf687383e2518be2c76f954da213c00f0e041454da9624f3771593267c64736f6c6343000810003300000000000000000000000037cd4e8875e3edaffdfe9be63958f07effbd0bfd0000000000000000000000004b469deeb64a9bd523bd6cafe67830f7cec5121c
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c80637b0a47ee1161008c5780638e4647ee116100665780638e4647ee146101ea5780639e447fc61461020a578063a694fc3a1461021d578063f2fde38b1461023057600080fd5b80637b0a47ee146101c7578063817b1cd2146101d05780638da5cb5b146101d957600080fd5b80632e1a7d4d116100c85780632e1a7d4d1461017b5780634e71d92d146101905780635298b86914610198578063715018a6146101bf57600080fd5b8063125f9e33146100ef57806319b33eb3146101335780632cc138be14610154575b600080fd5b6101167f0000000000000000000000004b469deeb64a9bd523bd6cafe67830f7cec5121c81565b6040516001600160a01b0390911681526020015b60405180910390f35b6101466101413660046108f7565b610243565b60405190815260200161012a565b6101467f000000000000000000000000000000000000000000000000000000006335938781565b61018e610189366004610920565b610261565b005b61018e610402565b6101167f00000000000000000000000037cd4e8875e3edaffdfe9be63958f07effbd0bfd81565b61018e610526565b61014660015481565b61014660035481565b6000546001600160a01b0316610116565b6101466101f83660046108f7565b60026020526000908152604090205481565b61018e610218366004610920565b61053a565b61018e61022b366004610920565b61057d565b61018e61023e3660046108f7565b6106eb565b60008061024e610769565b905061025a83826107c7565b9392505050565b33600061026c610769565b600581905542600455905061028182826107c7565b6001600160a01b038316600090815260076020908152604080832093909355600690529081208290558390036102ca5760405163d6d9e66560e01b815260040160405180910390fd5b336000908152600260205260409020548311156102fa57604051630db73cdf60e41b815260040160405180910390fd5b60405163a9059cbb60e01b8152336004820152602481018490527f00000000000000000000000037cd4e8875e3edaffdfe9be63958f07effbd0bfd6001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015610367573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038b9190610939565b50826003600082825461039e9190610971565b909155505033600090815260026020526040812080548592906103c2908490610971565b909155505060405183815233907f9ae365bc224c29b9dfc7abde7159ff44e51022629f89e826f84c65ba548c4b6f906020015b60405180910390a2505050565b33600061040d610769565b600581905542600455905061042282826107c7565b6001600160a01b0383166000908152600760208181526040808420949094556006815283832085905533835252908120549081900361046057505050565b3360008181526007602052604080822091909155516340c10f1960e01b81526004810191909152602481018290526001600160a01b037f0000000000000000000000004b469deeb64a9bd523bd6cafe67830f7cec5121c16906340c10f1990604401600060405180830381600087803b1580156104dc57600080fd5b505af11580156104f0573d6000803e3d6000fd5b50506040518381523392507f91ae3543968680693578950bd4bcf94665deafb79635a44064c21fefec0f8f5c91506020016103f5565b61052e61084d565b61053860006108a7565b565b61054261084d565b60018190556040518181527f1e3be2efa25bca5bff2215c7b30b31086e703d6aa7d9b9a1f8ba62c5291219ad9060200160405180910390a150565b336000610588610769565b600581905542600455905061059d82826107c7565b6001600160a01b038316600090815260076020908152604080832093909355600690529081208290558390036105e65760405163f69a94d360e01b815260040160405180910390fd5b6040516323b872dd60e01b8152336004820152306024820152604481018490527f00000000000000000000000037cd4e8875e3edaffdfe9be63958f07effbd0bfd6001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067d9190610939565b5082600360008282546106909190610984565b909155505033600090815260026020526040812080548592906106b4908490610984565b909155505060405183815233907f440037eff5bc42ac4fa37a7bf3a2738689f3ca987cb8c286dd634283e39af54b906020016103f5565b6106f361084d565b6001600160a01b03811661075d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b610766816108a7565b50565b600060035460000361077c575060055490565b60035460045461078c9042610971565b6001546107999190610997565b6107ab90670de0b6b3a7640000610997565b6107b591906109b6565b6005546107c29190610984565b905090565b6001600160a01b038216600090815260066020526040812054670de0b6b3a7640000906107f49084610971565b6001600160a01b0385166000908152600260205260409020546108179190610997565b61082191906109b6565b6001600160a01b0384166000908152600760205260409020546108449190610984565b90505b92915050565b6000546001600160a01b031633146105385760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610754565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561090957600080fd5b81356001600160a01b038116811461025a57600080fd5b60006020828403121561093257600080fd5b5035919050565b60006020828403121561094b57600080fd5b8151801515811461025a57600080fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156108475761084761095b565b808201808211156108475761084761095b565b60008160001904831182151516156109b1576109b161095b565b500290565b6000826109d357634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220fa7e61bf687383e2518be2c76f954da213c00f0e041454da9624f3771593267c64736f6c63430008100033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000037cd4e8875e3edaffdfe9be63958f07effbd0bfd0000000000000000000000004b469deeb64a9bd523bd6cafe67830f7cec5121c
-----Decoded View---------------
Arg [0] : _s (address): 0x37cd4E8875E3EDafFDFe9Be63958f07eFfBD0Bfd
Arg [1] : _r (address): 0x4B469deeb64A9BD523bd6cAFE67830F7CEC5121C
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000037cd4e8875e3edaffdfe9be63958f07effbd0bfd
Arg [1] : 0000000000000000000000004b469deeb64a9bd523bd6cafe67830f7cec5121c
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 29 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.