More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 80 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw From Po... | 13230269 | 1101 days ago | IN | 0 ETH | 0.00486635 | ||||
Claim Stake | 13229771 | 1101 days ago | IN | 0 ETH | 0.00198633 | ||||
Claim Drip | 13229771 | 1101 days ago | IN | 0 ETH | 0.00249121 | ||||
Withdraw From Po... | 13197218 | 1106 days ago | IN | 0 ETH | 0.00684076 | ||||
Claim Stake | 13197189 | 1106 days ago | IN | 0 ETH | 0.00380903 | ||||
Withdraw From Po... | 13174077 | 1110 days ago | IN | 0 ETH | 0.00904402 | ||||
Claim Stake | 13173908 | 1110 days ago | IN | 0 ETH | 0.00311273 | ||||
Claim Stake | 12868851 | 1157 days ago | IN | 0 ETH | 0.00030812 | ||||
Claim Stake | 12868850 | 1157 days ago | IN | 0 ETH | 0.00038928 | ||||
Extended Stake | 12648292 | 1192 days ago | IN | 0 ETH | 0.00128827 | ||||
Deposit Into Poo... | 12646871 | 1192 days ago | IN | 0 ETH | 0.00128398 | ||||
Withdraw From Po... | 12614246 | 1197 days ago | IN | 0 ETH | 0.00266385 | ||||
Claim Stake | 12614238 | 1197 days ago | IN | 0 ETH | 0.00108416 | ||||
Claim Stake | 12614235 | 1197 days ago | IN | 0 ETH | 0.0011122 | ||||
Claim Stake | 12614177 | 1197 days ago | IN | 0 ETH | 0.0007985 | ||||
Withdraw From Po... | 12613904 | 1197 days ago | IN | 0 ETH | 0.00153889 | ||||
Withdraw From Po... | 12613887 | 1197 days ago | IN | 0 ETH | 0.00171024 | ||||
Withdraw From Po... | 12613855 | 1197 days ago | IN | 0 ETH | 0.00165323 | ||||
Claim Stake | 12613851 | 1197 days ago | IN | 0 ETH | 0.00072277 | ||||
Withdraw From Po... | 12613250 | 1197 days ago | IN | 0 ETH | 0.00074108 | ||||
Withdraw From Po... | 12613046 | 1197 days ago | IN | 0 ETH | 0.00062708 | ||||
Claim Stake | 12613041 | 1197 days ago | IN | 0 ETH | 0.00030578 | ||||
Claim Stake | 12613040 | 1197 days ago | IN | 0 ETH | 0.00030578 | ||||
Claim Stake | 12613037 | 1197 days ago | IN | 0 ETH | 0.00026085 | ||||
Claim Stake | 12613037 | 1197 days ago | IN | 0 ETH | 0.00031369 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
Staking
Compiler Version
v0.5.13+commit.5b0b510c
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.5.13; /* Main functionality: 2% fee on entry and 2% fee on exit deducted from input/output amount and distributed to all current share holders proportional to their position in the pool Extended stake bonuses [optional]: 30 days = 50% 60 days = 125% 90 days = 238% -15% penalty when unstaking extended stake early (distributed to share holders similar to entry/exit fee) Feature #1 - The airdrop: Admin (or anyone else) can distribute 100% of their deposit among all active share holders Feature #2 - The drip: Earn "emissionRate" set by admin per second per 1 token deposited into the pool default emissionRate is 0.00000001 tokens per second per 1 token user has deposited */ contract Staking { constructor(address _stakingToken, uint256 _emissionRate) public { erc20 = TOKEN(address(_stakingToken)); // set the staking token admin = msg.sender; // set the admin emissionRate = _emissionRate; // set the default emission rate (admin can change this later) // set the extended staking options stakeOptions[0] = StakeOption(30 days, 50); // 50% after 30 days stakeOptions[1] = StakeOption(60 days, 125); // 125% after 60 days stakeOptions[2] = StakeOption(90 days, 238); // 238% after 90 days } using SafeMath for uint256; // Declare the staking token TOKEN erc20; // Admin is payable so they can withdraw any ETH that may be sent here accidentally address payable admin; // Total balance of all users in the pool // This has the entry fee already applied so should always be < erc20.balanceOf(address(this)) uint256 public totalBalance; // How many staking tokens to reward per second per 1 deposited token uint256 public emissionRate; // All providers aka. the users / stakers in the system mapping(address => Provider) public provider; // All stakes mapped to their owners mapping(address => Stake[]) public stakes; // Extended stake options mapping(uint8 => StakeOption) public stakeOptions; // For admin only functions modifier isAdmin() { require(admin == msg.sender, "Admin only function"); _; } // Events event Deposit(address _user, uint256 _amount, uint256 _timestamp); event Withdraw(address _user, uint256 _amount, uint256 _timestamp); event ExtendedStake(address _user, uint256 _amount, uint8 _stakeOption, uint256 _timestamp); event StakeEndWithBonus(address _user, uint256 _bonus, uint256 _timestamp); event StakeEndWithPenalty(address _user, uint256 _amount, uint256 _timestamp); event ClaimDrip(address _user, uint256 _amount, uint256 _timestamp); event Airdrop(address _sender, uint256 _amount, uint256 _timestamp); event EmissionRateChanged(uint256 _newEmissionRate); // Extended stake struct Stake { uint256 amount; // amount of tokens staked uint32 unlockDate; // unlocks at this timestamp uint8 stakeBonus; // the +% bonus this stake gives } // Stake option, we have 3 of them struct StakeOption { uint32 duration; uint8 bonusPercent; } // User data struct Provider { uint256 commitAmount; // user's extended stake aka. the locked amount uint256 balance; // user's available balance (to extended stake or to withdraw) uint256 dripBalance; // total drips collected before last deposit uint32 lastUpdateAt; // timestamp for last update when dripBalance was calculated } // Function to deposit tokens into the pool function depositIntoPool(uint256 _depositAmount) public { // Check and transfer tokens here require( erc20.transferFrom(msg.sender, address(this), _depositAmount) == true, "transferFrom did not succeed. Are we approved?" ); // Declare the user Provider storage user = provider[msg.sender]; if (user.balance > 0) { // User has previously staked so calculate the new dripBalance user.dripBalance = dripBalance(msg.sender); } // deduct the 2% entry fee uint256 balanceToAdd = SafeMath.sub(_depositAmount, SafeMath.div(_depositAmount, 50)); user.balance = SafeMath.add(user.balance, balanceToAdd); user.lastUpdateAt = uint32(now); totalBalance = SafeMath.add(totalBalance, balanceToAdd); emit Deposit(msg.sender, _depositAmount, now); } // Function to withdraw all available balance (including dripped rewards) from the pool // Does not include the extended stake (locked) balances, if any exist function withdrawFromPool(uint256 _amount) public { Provider storage user = provider[msg.sender]; uint256 availableBalance = SafeMath.sub(user.balance, user.commitAmount); require(_amount <= availableBalance, "Amount withdrawn exceeds available balance"); // Claim all dripped rewards first claimDrip(); // deduct the 2% exit fee uint256 amountToWithdraw = SafeMath.div(SafeMath.mul(_amount, 49), 50); uint256 contractBalance = erc20.balanceOf(address(this)); // tokens in the contract * withdraw amount with fee / total balance with fee(s) uint256 amountToSend = SafeMath.div(SafeMath.mul(contractBalance, amountToWithdraw), totalBalance); // Subtract the amount user.balance = SafeMath.sub(user.balance, _amount); totalBalance = SafeMath.sub(totalBalance, _amount); // Transfer erc20.transfer(msg.sender, amountToSend); emit Withdraw(msg.sender, _amount, now); } // Function to enter an extended stake for a fixed period of time function extendedStake(uint256 _amount, uint8 _stakeOption) public { // We only have 0, 1, 2 options require(_stakeOption <= 2, "Invalid staking option"); Provider storage user = provider[msg.sender]; uint256 availableBalance = SafeMath.sub(user.balance, user.commitAmount); require(_amount <= availableBalance, "Stake amount exceeds available balance"); // Set unlock date and bonus from chosen option uint32 unlockDate = uint32(now) + stakeOptions[_stakeOption].duration; uint8 stakeBonus = stakeOptions[_stakeOption].bonusPercent; // Add as commitAmount user.commitAmount = SafeMath.add(user.commitAmount, _amount); // Push the new stake stakes[msg.sender].push(Stake(_amount, unlockDate, stakeBonus)); emit ExtendedStake(msg.sender, _amount, _stakeOption, now); } // Function to exit an extended stake // Distributes reward if unlockDate has passed or deducts a -15% penalty if it's a premature exit function claimStake(uint256 _stakeId) public { // Make sure the _stakeId provided is within range uint256 playerStakeCount = stakes[msg.sender].length; require(_stakeId < playerStakeCount, "Stake does not exist"); // Declare a user's stake & require it to have an amount Stake memory stake = stakes[msg.sender][_stakeId]; require(stake.amount > 0, "Invalid stake amount"); // Maintains the stake array length if (playerStakeCount > 1) { stakes[msg.sender][_stakeId] = stakes[msg.sender][playerStakeCount - 1]; } delete stakes[msg.sender][playerStakeCount - 1]; stakes[msg.sender].length--; Provider storage user = provider[msg.sender]; if (stake.unlockDate <= now) { // Stake duration has passed here. Distribute the stakeBonus reward! uint256 balanceToAdd = SafeMath.div(SafeMath.mul(stake.amount, stake.stakeBonus), 100); totalBalance = SafeMath.add(totalBalance, balanceToAdd); user.commitAmount = SafeMath.sub(user.commitAmount, stake.amount); user.balance = SafeMath.add(user.balance, balanceToAdd); emit StakeEndWithBonus(msg.sender, balanceToAdd, now); } else { // Stake duration has not passed. Apply the 15% penalty uint256 weightToRemove = SafeMath.div(SafeMath.mul(3, stake.amount), 20); user.balance = SafeMath.sub(user.balance, weightToRemove); totalBalance = SafeMath.sub(totalBalance, weightToRemove); user.commitAmount = SafeMath.sub(user.commitAmount, stake.amount); emit StakeEndWithPenalty(msg.sender, weightToRemove, now); } } // Function to claim dripped rewards function claimDrip() public { Provider storage user = provider[msg.sender]; uint256 amountToSend = dripBalance(msg.sender); user.dripBalance = 0; user.lastUpdateAt = uint32(now); erc20.transfer(msg.sender, amountToSend); emit ClaimDrip(msg.sender, amountToSend, now); } // Airdrop to pool // Anyone can airdrop tokens into the pool. Since withdrawFromPool() uses contractBalance = erc20.balanceOf(address(this)) // in its calculations, everything extra sent to our contract will get distributed proportionally when user withdraws from pool function airdrop(uint256 _amount) external { require( erc20.transferFrom(msg.sender, address(this), _amount) == true, "transferFrom did not succeed. Are we approved?" ); emit Airdrop(msg.sender, _amount, now); } // Admin can edit the emissionRate function changeEmissionRate(uint256 _emissionRate) external isAdmin { if (emissionRate != _emissionRate) { emissionRate = _emissionRate; emit EmissionRateChanged(_emissionRate); } } // Admin can withdraw any ETH that might be accidentally sent here function withdrawETH() external isAdmin { admin.transfer(address(this).balance); } // transfer admin to another address function transferAdmin(address _newAdmin) external isAdmin { admin = address(uint160(_newAdmin)); } // Admin can withdraw any ERC20 token that might be accidentally sent here // Excluding of course the staking token itself (funds are safu) function withdrawERC20(TOKEN token) public isAdmin { require(address(token) != address(0), "Invalid address"); require(address(token) != address(erc20), "Cannot withdraw the staking token"); uint256 balance = token.balanceOf(address(this)); token.transfer(admin, balance); } // Calculates the undebited drip rewards // Formula: Seconds staked X emission rate X user's total deposit / 10^18 function _unDebitedDrips(Provider memory user) internal view returns (uint256) { // (now - user.lastUpdateAt) * emissionRate * user.balance / 1e18 return SafeMath.div( SafeMath.mul( SafeMath.mul(SafeMath.sub(now, uint256(user.lastUpdateAt)), emissionRate), user.balance ), 1e18 ); } // Calculte how many dripped tokens an address currently has function dripBalance(address _user) public view returns (uint256) { Provider memory user = provider[_user]; return SafeMath.add(user.dripBalance, _unDebitedDrips(user)); } // Fetch all active stakes for a given user function stakesOf(address _user) public view returns (uint256[3][] memory) { uint256 userStakeCount = stakes[_user].length; uint256[3][] memory data = new uint256[3][](userStakeCount); for (uint256 i = 0; i < userStakeCount; i++) { Stake memory stake = stakes[_user][i]; data[i][0] = stake.amount; data[i][1] = stake.unlockDate; data[i][2] = stake.stakeBonus; } return (data); } } contract TOKEN { function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); } library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256 c) { if (a == 0) { return 0; } c = a * b; assert(c / a == b); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256 c) { c = a + b; assert(c >= a); return c; } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_stakingToken","type":"address"},{"internalType":"uint256","name":"_emissionRate","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"Airdrop","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_user","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"ClaimDrip","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_user","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_newEmissionRate","type":"uint256"}],"name":"EmissionRateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_user","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"_stakeOption","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"ExtendedStake","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_user","type":"address"},{"indexed":false,"internalType":"uint256","name":"_bonus","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"StakeEndWithBonus","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_user","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"StakeEndWithPenalty","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_user","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"Withdraw","type":"event"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"airdrop","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_emissionRate","type":"uint256"}],"name":"changeEmissionRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimDrip","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_stakeId","type":"uint256"}],"name":"claimStake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_depositAmount","type":"uint256"}],"name":"depositIntoPool","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"dripBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"emissionRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint8","name":"_stakeOption","type":"uint8"}],"name":"extendedStake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"provider","outputs":[{"internalType":"uint256","name":"commitAmount","type":"uint256"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"dripBalance","type":"uint256"},{"internalType":"uint32","name":"lastUpdateAt","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint8","name":"","type":"uint8"}],"name":"stakeOptions","outputs":[{"internalType":"uint32","name":"duration","type":"uint32"},{"internalType":"uint8","name":"bonusPercent","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakes","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint32","name":"unlockDate","type":"uint32"},{"internalType":"uint8","name":"stakeBonus","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"stakesOf","outputs":[{"internalType":"uint256[3][]","name":"","type":"uint256[3][]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newAdmin","type":"address"}],"name":"transferAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract TOKEN","name":"token","type":"address"}],"name":"withdrawERC20","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawETH","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawFromPool","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b506040516118b93803806118b98339818101604052604081101561003357600080fd5b508051602091820151600080546001600160a01b039093166001600160a01b0319938416178155600180549093163317835560039190915560408051808201825262278d0081526032818601908152838052600680875291517f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f88054925160ff90811664010000000090810260ff60201b1963ffffffff95861663ffffffff199788161781169190911790935586518088018852624f1a008152607d818c01908152998952868b52517f3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a3180549a51841683029186169a87169a909a1784161790985585518087019096526276a700865260ee868a0190815260029097529390975292517f8819ef417987f8ae7a81f42cdfb18815282fe989326fbff903d13cf0e03ace2980549551909316909502949092169290911691909117909216179055611717806101a26000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806375829def116100a2578063ad7a672f11610071578063ad7a672f14610320578063e086e5ec14610328578063e0c39a2814610330578063f4f3b20014610372578063fbaf094a146103985761010b565b806375829def146102af5780638553631e146102d557806396afc450146102fb57806397dc4a13146103035761010b565b806344c7d6ef116100de57806344c7d6ef1461021b578063524826a314610238578063584b62a1146102405780637476083b146102925761010b565b8063098e43b71461011057806330fc43ed1461012f57806333b69c4c1461014c5780634026b309146101e3575b600080fd5b61012d6004803603602081101561012657600080fd5b50356103ea565b005b61012d6004803603602081101561014557600080fd5b5035610484565b6101726004803603602081101561016257600080fd5b50356001600160a01b0316610689565b60405180806020018281038252838181518152602001915080516000925b818410156101d257602080850284010151606080838360005b838110156101c15781810151838201526020016101a9565b505050509050019260010192610190565b925050509250505060405180910390f35b610209600480360360208110156101f957600080fd5b50356001600160a01b0316610803565b60408051918252519081900360200190f35b61012d6004803603602081101561023157600080fd5b5035610876565b61012d610bf5565b61026c6004803603604081101561025657600080fd5b506001600160a01b038135169060200135610cf4565b6040805193845263ffffffff909216602084015260ff1682820152519081900360600190f35b61012d600480360360208110156102a857600080fd5b5035610d3e565b61012d600480360360208110156102c557600080fd5b50356001600160a01b0316610ec3565b61012d600480360360408110156102eb57600080fd5b508035906020013560ff16610f3a565b6102096110fd565b61012d6004803603602081101561031957600080fd5b5035611103565b61020961120c565b61012d611212565b6103506004803603602081101561034657600080fd5b503560ff166112a1565b6040805163ffffffff909316835260ff90911660208301528051918290030190f35b61012d6004803603602081101561038857600080fd5b50356001600160a01b03166112c5565b6103be600480360360208110156103ae57600080fd5b50356001600160a01b03166114ad565b6040805194855260208501939093528383019190915263ffffffff166060830152519081900360800190f35b6001546001600160a01b0316331461043f576040805162461bcd60e51b815260206004820152601360248201527220b236b4b71037b7363c90333ab731ba34b7b760691b604482015290519081900360640190fd5b80600354146104815760038190556040805182815290517f4599b999878c4bf50471224bfb3eba260226641b501577af32f4ff1e2a3d70499181900360200190a15b50565b336000908152600460205260408120600181015481549192916104a791906114da565b9050808311156104e85760405162461bcd60e51b815260040180806020018281038252602a815260200180611644602a913960400191505060405180910390fd5b6104f0610bf5565b60006105076105008560316114f1565b6032611516565b60008054604080516370a0823160e01b8152306004820152905193945091926001600160a01b03909116916370a08231916024808301926020929190829003018186803b15801561055757600080fd5b505afa15801561056b573d6000803e3d6000fd5b505050506040513d602081101561058157600080fd5b50519050600061059c61059483856114f1565b600254611516565b90506105ac8560010154876114da565b60018601556002546105be90876114da565b600255600080546040805163a9059cbb60e01b81523360048201526024810185905290516001600160a01b039092169263a9059cbb926044808401936020939083900390910190829087803b15801561061657600080fd5b505af115801561062a573d6000803e3d6000fd5b505050506040513d602081101561064057600080fd5b50506040805133815260208101889052428183015290517ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689181900360600190a1505050505050565b6001600160a01b03811660009081526005602090815260409182902054825181815281830281019092019092526060919082908280156106e357816020015b6106d0611575565b8152602001906001900390816106c85790505b50905060005b828110156107fb576106f9611593565b6001600160a01b038616600090815260056020526040902080548390811061071d57fe5b600091825260209182902060408051606081018252600293909302909101805480845260019091015463ffffffff811694840194909452600160201b90930460ff1690820152845190925084908490811061077457fe5b602002602001015160006003811061078857fe5b602002018181525050806020015163ffffffff168383815181106107a857fe5b60200260200101516001600381106107bc57fe5b602002018181525050806040015160ff168383815181106107d957fe5b60200260200101516002600381106107ed57fe5b6020020152506001016106e9565b509392505050565b600061080d6115b3565b506001600160a01b03821660009081526004602090815260409182902082516080810184528154815260018201549281019290925260028101549282018390526003015463ffffffff1660608201529061086f9061086a83611529565b611568565b9392505050565b336000908152600560205260409020548082106108d1576040805162461bcd60e51b815260206004820152601460248201527314dd185ad948191bd95cc81b9bdd08195e1a5cdd60621b604482015290519081900360640190fd5b6108d9611593565b3360009081526005602052604090208054849081106108f457fe5b600091825260209182902060408051606081018252600293909302909101805480845260019091015463ffffffff811694840194909452600160201b90930460ff16908201529150610984576040805162461bcd60e51b8152602060048201526014602482015273125b9d985b1a59081cdd185ad948185b5bdd5b9d60621b604482015290519081900360640190fd5b6001821115610a3f57336000908152600560205260409020805460001984019081106109ac57fe5b906000526020600020906002020160056000336001600160a01b03166001600160a01b0316815260200190815260200160002084815481106109ea57fe5b6000918252602090912082546002909202019081556001918201805492909101805463ffffffff191663ffffffff90931692909217808355905460ff600160201b91829004160264ff00000000199091161790555b33600090815260056020526040902080546000198401908110610a5e57fe5b600091825260208083206002909202909101828155600101805464ffffffffff191690553382526005905260409020805490610a9e9060001983016115e1565b50336000908152600460209081526040909120908201514263ffffffff90911611610b5e576000610ae4610add8460000151856040015160ff166114f1565b6064611516565b9050610af260025482611568565b60025581548351610b0391906114da565b82556001820154610b149082611568565b60018301556040805133815260208101839052428183015290517f1d05fb93430b544706475771cbd0417b69c2a2cea278394db1a8a2e1d6c345c29181900360600190a150610bef565b6000610b79610b72600385600001516114f1565b6014611516565b9050610b898260010154826114da565b6001830155600254610b9b90826114da565b60025581548351610bac91906114da565b82556040805133815260208101839052428183015290517fad8803b43cfd65a2f1649f89540039d2690d2ca508a13451ef7940b17ca090349181900360600190a1505b50505050565b33600081815260046020526040812091610c0e90610803565b60006002840181905560038401805463ffffffff19164263ffffffff1617905580546040805163a9059cbb60e01b81523360048201526024810185905290519394506001600160a01b039091169263a9059cbb92604480840193602093929083900390910190829087803b158015610c8557600080fd5b505af1158015610c99573d6000803e3d6000fd5b505050506040513d6020811015610caf57600080fd5b50506040805133815260208101839052428183015290517f4a5130f8ee85eb62923b258424778f5364b439fcb57ac6751d77f02c01971d4a9181900360600190a15050565b60056020528160005260406000208181548110610d0d57fe5b60009182526020909120600290910201805460019091015490925063ffffffff81169150600160201b900460ff1683565b60008054604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216926323b872dd926064808401936020939083900390910190829087803b158015610d9957600080fd5b505af1158015610dad573d6000803e3d6000fd5b505050506040513d6020811015610dc357600080fd5b50511515600114610e055760405162461bcd60e51b815260040180806020018281038252602e81526020018061166e602e913960400191505060405180910390fd5b336000908152600460205260409020600181015415610e2d57610e2733610803565b60028201555b6000610e4383610e3e856032611516565b6114da565b9050610e53826001015482611568565b600183015560038201805463ffffffff19164263ffffffff16179055600254610e7c9082611568565b6002556040805133815260208101859052428183015290517f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159181900360600190a1505050565b6001546001600160a01b03163314610f18576040805162461bcd60e51b815260206004820152601360248201527220b236b4b71037b7363c90333ab731ba34b7b760691b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60028160ff161115610f8c576040805162461bcd60e51b815260206004820152601660248201527524b73b30b634b21039ba30b5b4b7339037b83a34b7b760511b604482015290519081900360640190fd5b33600090815260046020526040812060018101548154919291610faf91906114da565b905080841115610ff05760405162461bcd60e51b815260040180806020018281038252602681526020018061169c6026913960400191505060405180910390fd5b60ff80841660009081526006602052604090205483544263ffffffff83160192600160201b909204909116906110269087611568565b84553360008181526005602090815260408083208151606080820184528c825263ffffffff808a1683870190815260ff808b16858801908152865460018181018955978b529989902095516002909a02909501988955905197909401805493518516600160201b0264ff00000000199890921663ffffffff19909416939093179690961695909517905581519485529184018a9052908816838201524291830191909152517f8346ebdae6c1300ef8385b0ab17c9cca2f81da61f81d594bdfe6b3af180a02ec9181900360800190a1505050505050565b60035481565b60008054604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216926323b872dd926064808401936020939083900390910190829087803b15801561115e57600080fd5b505af1158015611172573d6000803e3d6000fd5b505050506040513d602081101561118857600080fd5b505115156001146111ca5760405162461bcd60e51b815260040180806020018281038252602e81526020018061166e602e913960400191505060405180910390fd5b6040805133815260208101839052428183015290517fada993ad066837289fe186cd37227aa338d27519a8a1547472ecb9831486d2729181900360600190a150565b60025481565b6001546001600160a01b03163314611267576040805162461bcd60e51b815260206004820152601360248201527220b236b4b71037b7363c90333ab731ba34b7b760691b604482015290519081900360640190fd5b6001546040516001600160a01b0390911690303180156108fc02916000818181858888f19350505050158015610481573d6000803e3d6000fd5b60066020526000908152604090205463ffffffff811690600160201b900460ff1682565b6001546001600160a01b0316331461131a576040805162461bcd60e51b815260206004820152601360248201527220b236b4b71037b7363c90333ab731ba34b7b760691b604482015290519081900360640190fd5b6001600160a01b038116611367576040805162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015290519081900360640190fd5b6000546001600160a01b03828116911614156113b45760405162461bcd60e51b81526004018080602001828103825260218152602001806116c26021913960400191505060405180910390fd5b604080516370a0823160e01b815230600482015290516000916001600160a01b038416916370a0823191602480820192602092909190829003018186803b1580156113fe57600080fd5b505afa158015611412573d6000803e3d6000fd5b505050506040513d602081101561142857600080fd5b50516001546040805163a9059cbb60e01b81526001600160a01b0392831660048201526024810184905290519293509084169163a9059cbb916044808201926020929091908290030181600087803b15801561148357600080fd5b505af1158015611497573d6000803e3d6000fd5b505050506040513d6020811015610bef57600080fd5b60046020526000908152604090208054600182015460028301546003909301549192909163ffffffff1684565b6000828211156114e657fe5b508082035b92915050565b600082611500575060006114eb565b508181028183828161150e57fe5b04146114eb57fe5b600081838161152157fe5b049392505050565b60006114eb61155a61155061154842866060015163ffffffff166114da565b6003546114f1565b84602001516114f1565b670de0b6b3a7640000611516565b818101828110156114eb57fe5b60405180606001604052806003906020820280388339509192915050565b604080516060810182526000808252602082018190529181019190915290565b6040518060800160405280600081526020016000815260200160008152602001600063ffffffff1681525090565b81548183558181111561160d5760020281600202836000526020600020918201910161160d9190611612565b505050565b61164091905b8082111561163c576000815560018101805464ffffffffff19169055600201611618565b5090565b9056fe416d6f756e742077697468647261776e206578636565647320617661696c61626c652062616c616e63657472616e7366657246726f6d20646964206e6f7420737563636565642e2041726520776520617070726f7665643f5374616b6520616d6f756e74206578636565647320617661696c61626c652062616c616e636543616e6e6f7420776974686472617720746865207374616b696e6720746f6b656ea265627a7a72315820830d3dba8ff8e02dc8b17f9be1d9c85faf9f264fbcaed34b667bac4280ef023464736f6c634300050d00320000000000000000000000009b02dd390a603add5c07f9fd9175b7dabe8d63b700000000000000000000000000000000000000000000000000000003e16926aa
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061010b5760003560e01c806375829def116100a2578063ad7a672f11610071578063ad7a672f14610320578063e086e5ec14610328578063e0c39a2814610330578063f4f3b20014610372578063fbaf094a146103985761010b565b806375829def146102af5780638553631e146102d557806396afc450146102fb57806397dc4a13146103035761010b565b806344c7d6ef116100de57806344c7d6ef1461021b578063524826a314610238578063584b62a1146102405780637476083b146102925761010b565b8063098e43b71461011057806330fc43ed1461012f57806333b69c4c1461014c5780634026b309146101e3575b600080fd5b61012d6004803603602081101561012657600080fd5b50356103ea565b005b61012d6004803603602081101561014557600080fd5b5035610484565b6101726004803603602081101561016257600080fd5b50356001600160a01b0316610689565b60405180806020018281038252838181518152602001915080516000925b818410156101d257602080850284010151606080838360005b838110156101c15781810151838201526020016101a9565b505050509050019260010192610190565b925050509250505060405180910390f35b610209600480360360208110156101f957600080fd5b50356001600160a01b0316610803565b60408051918252519081900360200190f35b61012d6004803603602081101561023157600080fd5b5035610876565b61012d610bf5565b61026c6004803603604081101561025657600080fd5b506001600160a01b038135169060200135610cf4565b6040805193845263ffffffff909216602084015260ff1682820152519081900360600190f35b61012d600480360360208110156102a857600080fd5b5035610d3e565b61012d600480360360208110156102c557600080fd5b50356001600160a01b0316610ec3565b61012d600480360360408110156102eb57600080fd5b508035906020013560ff16610f3a565b6102096110fd565b61012d6004803603602081101561031957600080fd5b5035611103565b61020961120c565b61012d611212565b6103506004803603602081101561034657600080fd5b503560ff166112a1565b6040805163ffffffff909316835260ff90911660208301528051918290030190f35b61012d6004803603602081101561038857600080fd5b50356001600160a01b03166112c5565b6103be600480360360208110156103ae57600080fd5b50356001600160a01b03166114ad565b6040805194855260208501939093528383019190915263ffffffff166060830152519081900360800190f35b6001546001600160a01b0316331461043f576040805162461bcd60e51b815260206004820152601360248201527220b236b4b71037b7363c90333ab731ba34b7b760691b604482015290519081900360640190fd5b80600354146104815760038190556040805182815290517f4599b999878c4bf50471224bfb3eba260226641b501577af32f4ff1e2a3d70499181900360200190a15b50565b336000908152600460205260408120600181015481549192916104a791906114da565b9050808311156104e85760405162461bcd60e51b815260040180806020018281038252602a815260200180611644602a913960400191505060405180910390fd5b6104f0610bf5565b60006105076105008560316114f1565b6032611516565b60008054604080516370a0823160e01b8152306004820152905193945091926001600160a01b03909116916370a08231916024808301926020929190829003018186803b15801561055757600080fd5b505afa15801561056b573d6000803e3d6000fd5b505050506040513d602081101561058157600080fd5b50519050600061059c61059483856114f1565b600254611516565b90506105ac8560010154876114da565b60018601556002546105be90876114da565b600255600080546040805163a9059cbb60e01b81523360048201526024810185905290516001600160a01b039092169263a9059cbb926044808401936020939083900390910190829087803b15801561061657600080fd5b505af115801561062a573d6000803e3d6000fd5b505050506040513d602081101561064057600080fd5b50506040805133815260208101889052428183015290517ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689181900360600190a1505050505050565b6001600160a01b03811660009081526005602090815260409182902054825181815281830281019092019092526060919082908280156106e357816020015b6106d0611575565b8152602001906001900390816106c85790505b50905060005b828110156107fb576106f9611593565b6001600160a01b038616600090815260056020526040902080548390811061071d57fe5b600091825260209182902060408051606081018252600293909302909101805480845260019091015463ffffffff811694840194909452600160201b90930460ff1690820152845190925084908490811061077457fe5b602002602001015160006003811061078857fe5b602002018181525050806020015163ffffffff168383815181106107a857fe5b60200260200101516001600381106107bc57fe5b602002018181525050806040015160ff168383815181106107d957fe5b60200260200101516002600381106107ed57fe5b6020020152506001016106e9565b509392505050565b600061080d6115b3565b506001600160a01b03821660009081526004602090815260409182902082516080810184528154815260018201549281019290925260028101549282018390526003015463ffffffff1660608201529061086f9061086a83611529565b611568565b9392505050565b336000908152600560205260409020548082106108d1576040805162461bcd60e51b815260206004820152601460248201527314dd185ad948191bd95cc81b9bdd08195e1a5cdd60621b604482015290519081900360640190fd5b6108d9611593565b3360009081526005602052604090208054849081106108f457fe5b600091825260209182902060408051606081018252600293909302909101805480845260019091015463ffffffff811694840194909452600160201b90930460ff16908201529150610984576040805162461bcd60e51b8152602060048201526014602482015273125b9d985b1a59081cdd185ad948185b5bdd5b9d60621b604482015290519081900360640190fd5b6001821115610a3f57336000908152600560205260409020805460001984019081106109ac57fe5b906000526020600020906002020160056000336001600160a01b03166001600160a01b0316815260200190815260200160002084815481106109ea57fe5b6000918252602090912082546002909202019081556001918201805492909101805463ffffffff191663ffffffff90931692909217808355905460ff600160201b91829004160264ff00000000199091161790555b33600090815260056020526040902080546000198401908110610a5e57fe5b600091825260208083206002909202909101828155600101805464ffffffffff191690553382526005905260409020805490610a9e9060001983016115e1565b50336000908152600460209081526040909120908201514263ffffffff90911611610b5e576000610ae4610add8460000151856040015160ff166114f1565b6064611516565b9050610af260025482611568565b60025581548351610b0391906114da565b82556001820154610b149082611568565b60018301556040805133815260208101839052428183015290517f1d05fb93430b544706475771cbd0417b69c2a2cea278394db1a8a2e1d6c345c29181900360600190a150610bef565b6000610b79610b72600385600001516114f1565b6014611516565b9050610b898260010154826114da565b6001830155600254610b9b90826114da565b60025581548351610bac91906114da565b82556040805133815260208101839052428183015290517fad8803b43cfd65a2f1649f89540039d2690d2ca508a13451ef7940b17ca090349181900360600190a1505b50505050565b33600081815260046020526040812091610c0e90610803565b60006002840181905560038401805463ffffffff19164263ffffffff1617905580546040805163a9059cbb60e01b81523360048201526024810185905290519394506001600160a01b039091169263a9059cbb92604480840193602093929083900390910190829087803b158015610c8557600080fd5b505af1158015610c99573d6000803e3d6000fd5b505050506040513d6020811015610caf57600080fd5b50506040805133815260208101839052428183015290517f4a5130f8ee85eb62923b258424778f5364b439fcb57ac6751d77f02c01971d4a9181900360600190a15050565b60056020528160005260406000208181548110610d0d57fe5b60009182526020909120600290910201805460019091015490925063ffffffff81169150600160201b900460ff1683565b60008054604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216926323b872dd926064808401936020939083900390910190829087803b158015610d9957600080fd5b505af1158015610dad573d6000803e3d6000fd5b505050506040513d6020811015610dc357600080fd5b50511515600114610e055760405162461bcd60e51b815260040180806020018281038252602e81526020018061166e602e913960400191505060405180910390fd5b336000908152600460205260409020600181015415610e2d57610e2733610803565b60028201555b6000610e4383610e3e856032611516565b6114da565b9050610e53826001015482611568565b600183015560038201805463ffffffff19164263ffffffff16179055600254610e7c9082611568565b6002556040805133815260208101859052428183015290517f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159181900360600190a1505050565b6001546001600160a01b03163314610f18576040805162461bcd60e51b815260206004820152601360248201527220b236b4b71037b7363c90333ab731ba34b7b760691b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60028160ff161115610f8c576040805162461bcd60e51b815260206004820152601660248201527524b73b30b634b21039ba30b5b4b7339037b83a34b7b760511b604482015290519081900360640190fd5b33600090815260046020526040812060018101548154919291610faf91906114da565b905080841115610ff05760405162461bcd60e51b815260040180806020018281038252602681526020018061169c6026913960400191505060405180910390fd5b60ff80841660009081526006602052604090205483544263ffffffff83160192600160201b909204909116906110269087611568565b84553360008181526005602090815260408083208151606080820184528c825263ffffffff808a1683870190815260ff808b16858801908152865460018181018955978b529989902095516002909a02909501988955905197909401805493518516600160201b0264ff00000000199890921663ffffffff19909416939093179690961695909517905581519485529184018a9052908816838201524291830191909152517f8346ebdae6c1300ef8385b0ab17c9cca2f81da61f81d594bdfe6b3af180a02ec9181900360800190a1505050505050565b60035481565b60008054604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216926323b872dd926064808401936020939083900390910190829087803b15801561115e57600080fd5b505af1158015611172573d6000803e3d6000fd5b505050506040513d602081101561118857600080fd5b505115156001146111ca5760405162461bcd60e51b815260040180806020018281038252602e81526020018061166e602e913960400191505060405180910390fd5b6040805133815260208101839052428183015290517fada993ad066837289fe186cd37227aa338d27519a8a1547472ecb9831486d2729181900360600190a150565b60025481565b6001546001600160a01b03163314611267576040805162461bcd60e51b815260206004820152601360248201527220b236b4b71037b7363c90333ab731ba34b7b760691b604482015290519081900360640190fd5b6001546040516001600160a01b0390911690303180156108fc02916000818181858888f19350505050158015610481573d6000803e3d6000fd5b60066020526000908152604090205463ffffffff811690600160201b900460ff1682565b6001546001600160a01b0316331461131a576040805162461bcd60e51b815260206004820152601360248201527220b236b4b71037b7363c90333ab731ba34b7b760691b604482015290519081900360640190fd5b6001600160a01b038116611367576040805162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015290519081900360640190fd5b6000546001600160a01b03828116911614156113b45760405162461bcd60e51b81526004018080602001828103825260218152602001806116c26021913960400191505060405180910390fd5b604080516370a0823160e01b815230600482015290516000916001600160a01b038416916370a0823191602480820192602092909190829003018186803b1580156113fe57600080fd5b505afa158015611412573d6000803e3d6000fd5b505050506040513d602081101561142857600080fd5b50516001546040805163a9059cbb60e01b81526001600160a01b0392831660048201526024810184905290519293509084169163a9059cbb916044808201926020929091908290030181600087803b15801561148357600080fd5b505af1158015611497573d6000803e3d6000fd5b505050506040513d6020811015610bef57600080fd5b60046020526000908152604090208054600182015460028301546003909301549192909163ffffffff1684565b6000828211156114e657fe5b508082035b92915050565b600082611500575060006114eb565b508181028183828161150e57fe5b04146114eb57fe5b600081838161152157fe5b049392505050565b60006114eb61155a61155061154842866060015163ffffffff166114da565b6003546114f1565b84602001516114f1565b670de0b6b3a7640000611516565b818101828110156114eb57fe5b60405180606001604052806003906020820280388339509192915050565b604080516060810182526000808252602082018190529181019190915290565b6040518060800160405280600081526020016000815260200160008152602001600063ffffffff1681525090565b81548183558181111561160d5760020281600202836000526020600020918201910161160d9190611612565b505050565b61164091905b8082111561163c576000815560018101805464ffffffffff19169055600201611618565b5090565b9056fe416d6f756e742077697468647261776e206578636565647320617661696c61626c652062616c616e63657472616e7366657246726f6d20646964206e6f7420737563636565642e2041726520776520617070726f7665643f5374616b6520616d6f756e74206578636565647320617661696c61626c652062616c616e636543616e6e6f7420776974686472617720746865207374616b696e6720746f6b656ea265627a7a72315820830d3dba8ff8e02dc8b17f9be1d9c85faf9f264fbcaed34b667bac4280ef023464736f6c634300050d0032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000009b02dd390a603add5c07f9fd9175b7dabe8d63b700000000000000000000000000000000000000000000000000000003e16926aa
-----Decoded View---------------
Arg [0] : _stakingToken (address): 0x9B02dD390a603Add5c07f9fd9175b7DABE8D63B7
Arg [1] : _emissionRate (uint256): 16666666666
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000009b02dd390a603add5c07f9fd9175b7dabe8d63b7
Arg [1] : 00000000000000000000000000000000000000000000000000000003e16926aa
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 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.