More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 849 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Start Unstake | 15552465 | 744 days ago | IN | 0 ETH | 0.0001637 | ||||
Unstake | 15405421 | 767 days ago | IN | 0 ETH | 0.00048299 | ||||
Start Unstake | 15405417 | 767 days ago | IN | 0 ETH | 0.0002265 | ||||
Start Unstake | 15405384 | 767 days ago | IN | 0 ETH | 0.00040639 | ||||
Unstake | 15193803 | 801 days ago | IN | 0 ETH | 0.001122 | ||||
Start Unstake | 15193798 | 801 days ago | IN | 0 ETH | 0.00090922 | ||||
Unstake | 15045504 | 824 days ago | IN | 0 ETH | 0.00242889 | ||||
Start Unstake | 15045501 | 824 days ago | IN | 0 ETH | 0.00196428 | ||||
Unstake | 15021333 | 828 days ago | IN | 0 ETH | 0.00178634 | ||||
Start Unstake | 15021325 | 828 days ago | IN | 0 ETH | 0.00102336 | ||||
Start Unstake | 14438170 | 923 days ago | IN | 0 ETH | 0.00189773 | ||||
Unstake | 14339586 | 938 days ago | IN | 0 ETH | 0.00042275 | ||||
Unstake | 14213274 | 957 days ago | IN | 0 ETH | 0.0041247 | ||||
Start Unstake | 14213259 | 957 days ago | IN | 0 ETH | 0.00181307 | ||||
Start Unstake | 14212653 | 958 days ago | IN | 0 ETH | 0.00178049 | ||||
Start Unstake | 14212610 | 958 days ago | IN | 0 ETH | 0.00419272 | ||||
Unstake | 14200301 | 959 days ago | IN | 0 ETH | 0.00388726 | ||||
Start Unstake | 14200236 | 959 days ago | IN | 0 ETH | 0.00232347 | ||||
Start Unstake | 13612226 | 1051 days ago | IN | 0 ETH | 0.00424242 | ||||
Start Unstake | 13294468 | 1101 days ago | IN | 0 ETH | 0.00071185 | ||||
Unstake | 13282088 | 1103 days ago | IN | 0 ETH | 0.00279241 | ||||
Start Unstake | 13282085 | 1103 days ago | IN | 0 ETH | 0.00278424 | ||||
Unstake | 13282008 | 1103 days ago | IN | 0 ETH | 0.00197742 | ||||
Start Unstake | 13282001 | 1103 days ago | IN | 0 ETH | 0.00261951 | ||||
Unstake | 13257151 | 1107 days ago | IN | 0 ETH | 0.00626977 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
MuseStaker
Compiler Version
v0.8.0+commit.c7dfd78e
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity 0.8.0; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; contract MuseStaker { IERC20 public MUSE = IERC20(0xB6Ca7399B4F9CA56FC27cBfF44F4d2e4Eef1fc81); mapping(address => uint256) public shares; mapping(address => uint256) public timeLock; mapping(address => uint256) public amountLocked; uint256 public totalShares; uint256 public unlockPeriod = 10 days; address public owner; constructor() { owner = msg.sender; } function changeUnlockPeriod(uint256 _period) external { require(msg.sender == owner, "forbidden"); unlockPeriod = _period; } function stake(uint256 _amount) public { timeLock[msg.sender] = 0; //reset timelock in case they stake twice. amountLocked[msg.sender] = amountLocked[msg.sender] + _amount; uint256 totalMuse = MUSE.balanceOf(address(this)); if (totalShares == 0 || totalMuse == 0) { shares[msg.sender] = _amount; totalShares += _amount; } else { uint256 bal = (_amount * totalShares) / (totalMuse); shares[msg.sender] += bal; totalShares += bal; } MUSE.transferFrom(msg.sender, address(this), _amount); } function startUnstake() public { timeLock[msg.sender] = block.timestamp + unlockPeriod; } // requires timeLock to be up to 2 days after release tiemstamp. function unstake() public { uint256 lockedUntil = timeLock[msg.sender]; timeLock[msg.sender] = 0; require( lockedUntil != 0 && block.timestamp >= lockedUntil && block.timestamp <= lockedUntil + 2 days, "!still locked" ); _unstake(); } function _unstake() internal { uint256 bal = (shares[msg.sender] * MUSE.balanceOf(address(this))) / (totalShares); totalShares -= shares[msg.sender]; shares[msg.sender] = 0; //burns the share from this user; amountLocked[msg.sender] = 0; MUSE.transfer(msg.sender, bal); } function claim() public { uint256 amount = amountLocked[msg.sender]; _unstake(); // Send locked muse + reward to user stake(amount); // Stake back only the original stake } function balance(address _user) public view returns (uint256) { if (totalShares == 0) { return 0; } uint256 bal = (shares[_user] * MUSE.balanceOf(address(this))) / (totalShares); return bal; } function userInfo(address _user) public view returns ( uint256 bal, uint256 claimable, uint256 deposited, uint256 timelock, bool isClaimable, uint256 globalShares, uint256 globalBalance ) { bal = balance(_user); if (bal > amountLocked[_user]) { claimable = bal - amountLocked[_user]; } deposited = amountLocked[_user]; timelock = timeLock[_user]; isClaimable = (timelock != 0 && block.timestamp >= timelock && block.timestamp <= timelock + 2 days); globalShares = totalShares; globalBalance = MUSE.balanceOf(address(this)); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, 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 `sender` to `recipient` 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 sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"MUSE","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"amountLocked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"balance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"changeUnlockPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startUnstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"timeLock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlockPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"bal","type":"uint256"},{"internalType":"uint256","name":"claimable","type":"uint256"},{"internalType":"uint256","name":"deposited","type":"uint256"},{"internalType":"uint256","name":"timelock","type":"uint256"},{"internalType":"bool","name":"isClaimable","type":"bool"},{"internalType":"uint256","name":"globalShares","type":"uint256"},{"internalType":"uint256","name":"globalBalance","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6080604052600080546001600160a01b03191673b6ca7399b4f9ca56fc27cbff44f4d2e4eef1fc81179055620d2f0060055534801561003d57600080fd5b50600680546001600160a01b03191633179055610aa08061005f6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636de114bb1161008c578063a694fc3a11610066578063a694fc3a14610198578063ce7c2ac2146101ab578063e3d670d7146101be578063f6c788b2146101d1576100ea565b80636de114bb146101755780638da5cb5b1461017d578063911dd3a114610185576100ea565b80633a98ef39116100c85780633a98ef391461013d57806343496568146101455780634e71d92d146101585780635262712f14610160576100ea565b80631959a002146100ef57806320d3a0b41461011e5780632def662014610133575b600080fd5b6101026100fd366004610892565b6101e4565b60405161011597969594939291906109b4565b60405180910390f35b610126610325565b60405161011591906109ab565b61013b61032b565b005b610126610396565b610126610153366004610892565b61039c565b61013b6103ae565b6101686103cf565b6040516101159190610910565b61013b6103de565b6101686103fd565b61013b6101933660046108e0565b61040c565b61013b6101a63660046108e0565b61043b565b6101266101b9366004610892565b610624565b6101266101cc366004610892565b610636565b6101266101df366004610892565b610706565b60008060008060008060006101f888610636565b6001600160a01b038916600090815260036020526040902054909750871115610241576001600160a01b03881660009081526003602052604090205461023e9088610a3d565b95505b6001600160a01b0388166000908152600360209081526040808320546002909252909120549095509350831580159061027a5750834210155b8015610292575061028e846202a3006109e6565b4211155b600480546000546040516370a0823160e01b81529396509094506001600160a01b0316916370a08231916102c891309101610910565b60206040518083038186803b1580156102e057600080fd5b505afa1580156102f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031891906108f8565b9050919395979092949650565b60055481565b3360009081526002602052604081208054919055801580159061034e5750804210155b80156103665750610362816202a3006109e6565b4211155b61038b5760405162461bcd60e51b815260040161038290610984565b60405180910390fd5b610393610718565b50565b60045481565b60026020526000908152604090205481565b336000908152600360205260409020546103c6610718565b6103938161043b565b6000546001600160a01b031681565b6005546103eb90426109e6565b33600090815260026020526040902055565b6006546001600160a01b031681565b6006546001600160a01b031633146104365760405162461bcd60e51b815260040161038290610961565b600555565b33600090815260026020908152604080832083905560039091529020546104639082906109e6565b3360009081526003602052604080822092909255805491516370a0823160e01b815290916001600160a01b0316906370a08231906104a5903090600401610910565b60206040518083038186803b1580156104bd57600080fd5b505afa1580156104d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f591906108f8565b905060045460001480610506575080155b1561053a573360009081526001602052604081208390556004805484929061052f9084906109e6565b909155506105999050565b6000816004548461054b9190610a1e565b61055591906109fe565b336000908152600160205260408120805492935083929091906105799084906109e6565b92505081905550806004600082825461059291906109e6565b9091555050505b6000546040516323b872dd60e01b81526001600160a01b03909116906323b872dd906105cd90339030908790600401610924565b602060405180830381600087803b1580156105e757600080fd5b505af11580156105fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061f91906108c0565b505050565b60016020526000908152604090205481565b60006004546000141561064b57506000610701565b60048054600080546040516370a0823160e01b815291936001600160a01b03909116916370a082319161068091309101610910565b60206040518083038186803b15801561069857600080fd5b505afa1580156106ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d091906108f8565b6001600160a01b0385166000908152600160205260409020546106f39190610a1e565b6106fd91906109fe565b9150505b919050565b60036020526000908152604090205481565b60048054600080546040516370a0823160e01b815291936001600160a01b03909116916370a082319161074d91309101610910565b60206040518083038186803b15801561076557600080fd5b505afa158015610779573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079d91906108f8565b336000908152600160205260409020546107b79190610a1e565b6107c191906109fe565b336000908152600160205260408120546004805493945090929091906107e8908490610a3d565b909155505033600081815260016020908152604080832083905560039091528082208290559054905163a9059cbb60e01b81526001600160a01b039091169163a9059cbb9161083c91908590600401610948565b602060405180830381600087803b15801561085657600080fd5b505af115801561086a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088e91906108c0565b5050565b6000602082840312156108a3578081fd5b81356001600160a01b03811681146108b9578182fd5b9392505050565b6000602082840312156108d1578081fd5b815180151581146108b9578182fd5b6000602082840312156108f1578081fd5b5035919050565b600060208284031215610909578081fd5b5051919050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6020808252600990820152683337b93134b23232b760b91b604082015260600190565b6020808252600d908201526c085cdd1a5b1b081b1bd8dad959609a1b604082015260600190565b90815260200190565b9687526020870195909552604086019390935260608501919091521515608084015260a083015260c082015260e00190565b600082198211156109f9576109f9610a54565b500190565b600082610a1957634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615610a3857610a38610a54565b500290565b600082821015610a4f57610a4f610a54565b500390565b634e487b7160e01b600052601160045260246000fdfea264697066735822122087a05dbddaedbab644fa71acfe9ca0dd6f8d89961f4905881f261cf9cd04548a64736f6c63430008000033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636de114bb1161008c578063a694fc3a11610066578063a694fc3a14610198578063ce7c2ac2146101ab578063e3d670d7146101be578063f6c788b2146101d1576100ea565b80636de114bb146101755780638da5cb5b1461017d578063911dd3a114610185576100ea565b80633a98ef39116100c85780633a98ef391461013d57806343496568146101455780634e71d92d146101585780635262712f14610160576100ea565b80631959a002146100ef57806320d3a0b41461011e5780632def662014610133575b600080fd5b6101026100fd366004610892565b6101e4565b60405161011597969594939291906109b4565b60405180910390f35b610126610325565b60405161011591906109ab565b61013b61032b565b005b610126610396565b610126610153366004610892565b61039c565b61013b6103ae565b6101686103cf565b6040516101159190610910565b61013b6103de565b6101686103fd565b61013b6101933660046108e0565b61040c565b61013b6101a63660046108e0565b61043b565b6101266101b9366004610892565b610624565b6101266101cc366004610892565b610636565b6101266101df366004610892565b610706565b60008060008060008060006101f888610636565b6001600160a01b038916600090815260036020526040902054909750871115610241576001600160a01b03881660009081526003602052604090205461023e9088610a3d565b95505b6001600160a01b0388166000908152600360209081526040808320546002909252909120549095509350831580159061027a5750834210155b8015610292575061028e846202a3006109e6565b4211155b600480546000546040516370a0823160e01b81529396509094506001600160a01b0316916370a08231916102c891309101610910565b60206040518083038186803b1580156102e057600080fd5b505afa1580156102f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031891906108f8565b9050919395979092949650565b60055481565b3360009081526002602052604081208054919055801580159061034e5750804210155b80156103665750610362816202a3006109e6565b4211155b61038b5760405162461bcd60e51b815260040161038290610984565b60405180910390fd5b610393610718565b50565b60045481565b60026020526000908152604090205481565b336000908152600360205260409020546103c6610718565b6103938161043b565b6000546001600160a01b031681565b6005546103eb90426109e6565b33600090815260026020526040902055565b6006546001600160a01b031681565b6006546001600160a01b031633146104365760405162461bcd60e51b815260040161038290610961565b600555565b33600090815260026020908152604080832083905560039091529020546104639082906109e6565b3360009081526003602052604080822092909255805491516370a0823160e01b815290916001600160a01b0316906370a08231906104a5903090600401610910565b60206040518083038186803b1580156104bd57600080fd5b505afa1580156104d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f591906108f8565b905060045460001480610506575080155b1561053a573360009081526001602052604081208390556004805484929061052f9084906109e6565b909155506105999050565b6000816004548461054b9190610a1e565b61055591906109fe565b336000908152600160205260408120805492935083929091906105799084906109e6565b92505081905550806004600082825461059291906109e6565b9091555050505b6000546040516323b872dd60e01b81526001600160a01b03909116906323b872dd906105cd90339030908790600401610924565b602060405180830381600087803b1580156105e757600080fd5b505af11580156105fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061f91906108c0565b505050565b60016020526000908152604090205481565b60006004546000141561064b57506000610701565b60048054600080546040516370a0823160e01b815291936001600160a01b03909116916370a082319161068091309101610910565b60206040518083038186803b15801561069857600080fd5b505afa1580156106ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d091906108f8565b6001600160a01b0385166000908152600160205260409020546106f39190610a1e565b6106fd91906109fe565b9150505b919050565b60036020526000908152604090205481565b60048054600080546040516370a0823160e01b815291936001600160a01b03909116916370a082319161074d91309101610910565b60206040518083038186803b15801561076557600080fd5b505afa158015610779573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079d91906108f8565b336000908152600160205260409020546107b79190610a1e565b6107c191906109fe565b336000908152600160205260408120546004805493945090929091906107e8908490610a3d565b909155505033600081815260016020908152604080832083905560039091528082208290559054905163a9059cbb60e01b81526001600160a01b039091169163a9059cbb9161083c91908590600401610948565b602060405180830381600087803b15801561085657600080fd5b505af115801561086a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088e91906108c0565b5050565b6000602082840312156108a3578081fd5b81356001600160a01b03811681146108b9578182fd5b9392505050565b6000602082840312156108d1578081fd5b815180151581146108b9578182fd5b6000602082840312156108f1578081fd5b5035919050565b600060208284031215610909578081fd5b5051919050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6020808252600990820152683337b93134b23232b760b91b604082015260600190565b6020808252600d908201526c085cdd1a5b1b081b1bd8dad959609a1b604082015260600190565b90815260200190565b9687526020870195909552604086019390935260608501919091521515608084015260a083015260c082015260e00190565b600082198211156109f9576109f9610a54565b500190565b600082610a1957634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615610a3857610a38610a54565b500290565b600082821015610a4f57610a4f610a54565b500390565b634e487b7160e01b600052601160045260246000fdfea264697066735822122087a05dbddaedbab644fa71acfe9ca0dd6f8d89961f4905881f261cf9cd04548a64736f6c63430008000033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $8.14 | 290.9389 | $2,368.24 |
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.