Notice: The OpenEthereum team and core developers are aware of the syncing issues facing the OE client and are working to diagnose and fix. New block data will not be available on Etherscan until a fix is released.
Contract Overview
Loopring: Staking Pool
More Info
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
OVERVIEW
The address for Loopring's user staking pool.
View more zero value Internal Transactions in Advanced View mode
Contract Name:
UserStakingPool
Compiler Version
v0.5.11+commit.c082d0b4
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-11-20 */ /** Author: Loopring Foundation (Loopring Project Ltd) */ pragma solidity ^0.5.11; contract Ownable { address public owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() public { owner = msg.sender; } modifier onlyOwner() { require(msg.sender == owner, "UNAUTHORIZED"); _; } function transferOwnership( address newOwner ) public onlyOwner { require(newOwner != address(0), "ZERO_ADDRESS"); emit OwnershipTransferred(owner, newOwner); owner = newOwner; } function renounceOwnership() public onlyOwner { emit OwnershipTransferred(owner, address(0)); owner = address(0); } } contract Claimable is Ownable { address public pendingOwner; modifier onlyPendingOwner() { require(msg.sender == pendingOwner, "UNAUTHORIZED"); _; } function transferOwnership( address newOwner ) public onlyOwner { require(newOwner != address(0) && newOwner != owner, "INVALID_ADDRESS"); pendingOwner = newOwner; } function claimOwnership() public onlyPendingOwner { emit OwnershipTransferred(owner, pendingOwner); owner = pendingOwner; pendingOwner = address(0); } } contract ERC20 { function totalSupply() public view returns (uint); function balanceOf( address who ) public view returns (uint); function allowance( address owner, address spender ) public view returns (uint); function transfer( address to, uint value ) public returns (bool); function transferFrom( address from, address to, uint value ) public returns (bool); function approve( address spender, uint value ) public returns (bool); } library ERC20SafeTransfer { function safeTransferAndVerify( address token, address to, uint value ) internal { safeTransferWithGasLimitAndVerify( token, to, value, gasleft() ); } function safeTransfer( address token, address to, uint value ) internal returns (bool) { return safeTransferWithGasLimit( token, to, value, gasleft() ); } function safeTransferWithGasLimitAndVerify( address token, address to, uint value, uint gasLimit ) internal { require( safeTransferWithGasLimit(token, to, value, gasLimit), "TRANSFER_FAILURE" ); } function safeTransferWithGasLimit( address token, address to, uint value, uint gasLimit ) internal returns (bool) { bytes memory callData = abi.encodeWithSelector( bytes4(0xa9059cbb), to, value ); (bool success, ) = token.call.gas(gasLimit)(callData); return checkReturnValue(success); } function safeTransferFromAndVerify( address token, address from, address to, uint value ) internal { safeTransferFromWithGasLimitAndVerify( token, from, to, value, gasleft() ); } function safeTransferFrom( address token, address from, address to, uint value ) internal returns (bool) { return safeTransferFromWithGasLimit( token, from, to, value, gasleft() ); } function safeTransferFromWithGasLimitAndVerify( address token, address from, address to, uint value, uint gasLimit ) internal { bool result = safeTransferFromWithGasLimit( token, from, to, value, gasLimit ); require(result, "TRANSFER_FAILURE"); } function safeTransferFromWithGasLimit( address token, address from, address to, uint value, uint gasLimit ) internal returns (bool) { bytes memory callData = abi.encodeWithSelector( bytes4(0x23b872dd), from, to, value ); (bool success, ) = token.call.gas(gasLimit)(callData); return checkReturnValue(success); } function checkReturnValue( bool success ) internal pure returns (bool) { if (success) { assembly { switch returndatasize() case 0 { success := 1 } case 32 { returndatacopy(0, 0, 32) success := mload(0) } default { success := 0 } } } return success; } } library MathUint { function mul( uint a, uint b ) internal pure returns (uint c) { c = a * b; require(a == 0 || c / a == b, "MUL_OVERFLOW"); } function sub( uint a, uint b ) internal pure returns (uint) { require(b <= a, "SUB_UNDERFLOW"); return a - b; } function add( uint a, uint b ) internal pure returns (uint c) { c = a + b; require(c >= a, "ADD_OVERFLOW"); } function decodeFloat( uint f ) internal pure returns (uint value) { uint numBitsMantissa = 23; uint exponent = f >> numBitsMantissa; uint mantissa = f & ((1 << numBitsMantissa) - 1); value = mantissa * (10 ** exponent); } } contract ReentrancyGuard { uint private _guardValue; modifier nonReentrant() { require(_guardValue == 0, "REENTRANCY"); _guardValue = 1; _; _guardValue = 0; } } contract IProtocolFeeVault { uint public constant REWARD_PERCENTAGE = 70; uint public constant DAO_PERDENTAGE = 20; address public userStakingPoolAddress; address public lrcAddress; address public tokenSellerAddress; address public daoAddress; uint claimedReward; uint claimedDAOFund; uint claimedBurn; event LRCClaimed(uint amount); event DAOFunded(uint amountDAO, uint amountBurn); event TokenSold(address token, uint amount); event SettingsUpdated(uint time); function updateSettings( address _userStakingPoolAddress, address _tokenSellerAddress, address _daoAddress ) external; function claimStakingReward(uint amount) external; function fundDAO() external; function sellTokenForLRC( address token, uint amount ) external; function getProtocolFeeStats() public view returns ( uint accumulatedFees, uint accumulatedBurn, uint accumulatedDAOFund, uint accumulatedReward, uint remainingFees, uint remainingBurn, uint remainingDAOFund, uint remainingReward ); } contract IUserStakingPool { uint public constant MIN_CLAIM_DELAY = 90 days; uint public constant MIN_WITHDRAW_DELAY = 90 days; address public lrcAddress; address public protocolFeeVaultAddress; uint public numAddresses; event ProtocolFeeVaultChanged (address feeVaultAddress); event LRCStaked (address indexed user, uint amount); event LRCWithdrawn (address indexed user, uint amount); event LRCRewarded (address indexed user, uint amount); function setProtocolFeeVault(address _protocolFeeVaultAddress) external; function getTotalStaking() public view returns (uint); function getUserStaking(address user) public view returns ( uint withdrawalWaitTime, uint rewardWaitTime, uint balance, uint pendingReward ); function stake(uint amount) external; function withdraw(uint amount) external; function claim() external returns (uint claimedAmount); } contract UserStakingPool is Claimable, ReentrancyGuard, IUserStakingPool { using ERC20SafeTransfer for address; using MathUint for uint; struct Staking { uint balance; uint64 depositedAt; uint64 claimedAt; } Staking public total; mapping (address => Staking) public stakings; constructor(address _lrcAddress) Claimable() public { require(_lrcAddress != address(0), "ZERO_ADDRESS"); lrcAddress = _lrcAddress; } function setProtocolFeeVault(address _protocolFeeVaultAddress) external nonReentrant onlyOwner { protocolFeeVaultAddress = _protocolFeeVaultAddress; emit ProtocolFeeVaultChanged(protocolFeeVaultAddress); } function getTotalStaking() public view returns (uint) { return total.balance; } function getUserStaking(address user) public view returns ( uint withdrawalWaitTime, uint rewardWaitTime, uint balance, uint pendingReward ) { withdrawalWaitTime = getUserWithdrawalWaitTime(user); rewardWaitTime = getUserClaimWaitTime(user); balance = stakings[user].balance; (, , pendingReward) = getUserPendingReward(user); } function stake(uint amount) external nonReentrant { require(amount > 0, "ZERO_VALUE"); lrcAddress.safeTransferFromAndVerify(msg.sender, address(this), amount); Staking storage user = stakings[msg.sender]; if (user.balance == 0) { numAddresses += 1; } uint balance = user.balance.add(amount); user.depositedAt = uint64( user.balance .mul(user.depositedAt) .add(amount.mul(now)) / balance ); user.claimedAt = uint64( user.balance .mul(user.claimedAt) .add(amount.mul(now)) / balance ); user.balance = balance; balance = total.balance.add(amount); total.claimedAt = uint64( total.balance .mul(total.claimedAt) .add(amount.mul(now)) / balance ); total.balance = balance; emit LRCStaked(msg.sender, amount); } function withdraw(uint amount) external nonReentrant { require(getUserWithdrawalWaitTime(msg.sender) == 0, "NEED_TO_WAIT"); if (protocolFeeVaultAddress != address(0) && getUserClaimWaitTime(msg.sender) == 0) { claimReward(); } Staking storage user = stakings[msg.sender]; uint _amount = (amount == 0 || amount > user.balance) ? user.balance : amount; require(_amount > 0, "ZERO_BALANCE"); total.balance = total.balance.sub(_amount); user.balance = user.balance.sub(_amount); if (user.balance == 0) { numAddresses -= 1; delete stakings[msg.sender]; } lrcAddress.safeTransferAndVerify(msg.sender, _amount); emit LRCWithdrawn(msg.sender, _amount); } function claim() external nonReentrant returns (uint claimedAmount) { return claimReward(); } function claimReward() private returns (uint claimedAmount) { require(protocolFeeVaultAddress != address(0), "ZERO_ADDRESS"); require(getUserClaimWaitTime(msg.sender) == 0, "NEED_TO_WAIT"); uint totalPoints; uint userPoints; (totalPoints, userPoints, claimedAmount) = getUserPendingReward(msg.sender); if (claimedAmount > 0) { IProtocolFeeVault(protocolFeeVaultAddress).claimStakingReward(claimedAmount); total.balance = total.balance.add(claimedAmount); total.claimedAt = uint64( now.sub(totalPoints.sub(userPoints) / total.balance) ); Staking storage user = stakings[msg.sender]; user.balance = user.balance.add(claimedAmount); user.claimedAt = uint64(now); } emit LRCRewarded(msg.sender, claimedAmount); } function getUserWithdrawalWaitTime(address user) private view returns (uint) { uint depositedAt = stakings[user].depositedAt; if (depositedAt == 0) { return MIN_WITHDRAW_DELAY; } else { uint time = depositedAt + MIN_WITHDRAW_DELAY; return (time <= now) ? 0 : time.sub(now); } } function getUserClaimWaitTime(address user) private view returns (uint) { uint claimedAt = stakings[user].claimedAt; if (claimedAt == 0) { return MIN_CLAIM_DELAY; } else { uint time = stakings[user].claimedAt + MIN_CLAIM_DELAY; return (time <= now) ? 0 : time.sub(now); } } function getUserPendingReward(address user) private view returns ( uint totalPoints, uint userPoints, uint pendingReward ) { Staking storage staking = stakings[user]; totalPoints = total.balance.mul(now.sub(total.claimedAt).add(1)); userPoints = staking.balance.mul(now.sub(staking.claimedAt)); if (totalPoints < userPoints) { userPoints = totalPoints; } if (protocolFeeVaultAddress != address(0) && totalPoints != 0 && userPoints != 0) { (, , , , , , , pendingReward) = IProtocolFeeVault( protocolFeeVaultAddress ).getProtocolFeeStats(); pendingReward = pendingReward.mul(userPoints) / totalPoints; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserStaking","outputs":[{"internalType":"uint256","name":"withdrawalWaitTime","type":"uint256"},{"internalType":"uint256","name":"rewardWaitTime","type":"uint256"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"pendingReward","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"total","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint64","name":"depositedAt","type":"uint64"},{"internalType":"uint64","name":"claimedAt","type":"uint64"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"numAddresses","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lrcAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"claim","outputs":[{"internalType":"uint256","name":"claimedAmount","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getTotalStaking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MIN_CLAIM_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_protocolFeeVaultAddress","type":"address"}],"name":"setProtocolFeeVault","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"MIN_WITHDRAW_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"protocolFeeVaultAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakings","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint64","name":"depositedAt","type":"uint64"},{"internalType":"uint64","name":"claimedAt","type":"uint64"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lrcAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"feeVaultAddress","type":"address"}],"name":"ProtocolFeeVaultChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LRCStaked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LRCWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LRCRewarded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
608060405234801561001057600080fd5b506040516114e43803806114e48339818101604052602081101561003357600080fd5b5051600080546001600160a01b031916331790556001600160a01b0381166100bc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f414444524553530000000000000000000000000000000000000000604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b03929092169190911790556113f9806100eb6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063715018a6116100a2578063ae15943911610071578063ae1594391461020c578063c730eca414610267578063dc6e13e11461026f578063e30c397814610295578063f2fde38b1461029d57610116565b8063715018a61461021457806388e95c471461021c5780638da5cb5b14610242578063a694fc3a1461024a57610116565b80633d6cf722116100e95780633d6cf722146101d05780634e71d92d146101f45780634e71e0c8146101fc57806358d575451461020457806361605b921461020c57610116565b80630c0fd5491461011b5780632ddbd13a146101675780632e1a7d4d146101975780632f8646d6146101b6575b600080fd5b6101416004803603602081101561013157600080fd5b50356001600160a01b03166102c3565b604080519485526020850193909352838301919091526060830152519081900360800190f35b61016f610312565b604080519384526001600160401b039283166020850152911682820152519081900360600190f35b6101b4600480360360208110156101ad57600080fd5b503561032f565b005b6101be610522565b60408051918252519081900360200190f35b6101d8610528565b604080516001600160a01b039092168252519081900360200190f35b6101be610537565b6101b4610594565b6101be610646565b6101be61064c565b6101b4610653565b6101b46004803603602081101561023257600080fd5b50356001600160a01b03166106eb565b6101d86107df565b6101b46004803603602081101561026057600080fd5b50356107ee565b6101d8610a52565b61016f6004803603602081101561028557600080fd5b50356001600160a01b0316610a61565b6101d8610a8e565b6101b4600480360360208110156102b357600080fd5b50356001600160a01b0316610a9d565b6000806000806102d285610b76565b93506102dd85610bdc565b6001600160a01b038616600090815260086020526040902054909350915061030485610c63565b959794965092949392505050565b6006546007546001600160401b0380821691600160401b90041683565b60025415610371576040805162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b604482015290519081900360640190fd5b600160025561037f33610b76565b156103c0576040805162461bcd60e51b815260206004820152600c60248201526b1391515117d513d7d5d0525560a21b604482015290519081900360640190fd5b6004546001600160a01b0316158015906103e057506103de33610bdc565b155b156103ef576103ed610dbc565b505b3360009081526008602052604081209082158061040c5750815483115b6104165782610419565b81545b90506000811161045f576040805162461bcd60e51b815260206004820152600c60248201526b5a45524f5f42414c414e434560a01b604482015290519081900360640190fd5b600654610472908263ffffffff610fc516565b6006558154610487908263ffffffff610fc516565b8083556104c5576005805460001901905533600090815260086020526040812090815560010180546fffffffffffffffffffffffffffffffff191690555b6003546104e2906001600160a01b0316338363ffffffff61101716565b60408051828152905133917f2958029af76592f61d851f6d7c7456b3d9ae7536e7dc715c408fe02cd06c4651919081900360200190a25050600060025550565b60055481565b6003546001600160a01b031681565b600060025460001461057d576040805162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b604482015290519081900360640190fd5b600160025561058a610dbc565b9050600060025590565b6001546001600160a01b031633146105e2576040805162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b60065490565b6276a70081565b6000546001600160a01b031633146106a1576040805162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6002541561072d576040805162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b604482015290519081900360640190fd5b60016002556000546001600160a01b03163314610780576040805162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b03838116919091179182905560408051929091168252517fb3b08642421ba31da9df792b3dbe9f52ff071894103ba3b1c4317b2daf33736c916020908290030190a1506000600255565b6000546001600160a01b031681565b60025415610830576040805162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b604482015290519081900360640190fd5b600160025580610874576040805162461bcd60e51b815260206004820152600a6024820152695a45524f5f56414c554560b01b604482015290519081900360640190fd5b600354610892906001600160a01b031633308463ffffffff61102816565b33600090815260086020526040902080546108b1576005805460010190555b80546000906108c6908463ffffffff61103b16565b9050806109076108dc854263ffffffff61108216565b600185015485546108fb916001600160401b031663ffffffff61108216565b9063ffffffff61103b16565b8161090e57fe5b60018401805467ffffffffffffffff1916929091046001600160401b0316919091179055806109606109408542611082565b600185015485546108fb91600160401b90046001600160401b0316611082565b8161096757fe5b60018401805467ffffffffffffffff60401b1916600160401b939092046001600160401b0316929092021790558082556006546109a4908461103b565b9050806109d96109ba854263ffffffff61108216565b6007546006546108fb91600160401b90046001600160401b0316611082565b816109e057fe5b600780546001600160401b039390920492909216600160401b0267ffffffffffffffff60401b19909116179055600681905560408051848152905133917f7bcf38427a7f7fc25e271d30f03522e51794ec2ba24df0703481c2b7222ced4e919081900360200190a25050600060025550565b6004546001600160a01b031681565b600860205260009081526040902080546001909101546001600160401b0380821691600160401b90041683565b6001546001600160a01b031681565b6000546001600160a01b03163314610aeb576040805162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015290519081900360640190fd5b6001600160a01b03811615801590610b1157506000546001600160a01b03828116911614155b610b54576040805162461bcd60e51b815260206004820152600f60248201526e494e56414c49445f4144445245535360881b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152600860205260408120600101546001600160401b031680610bac576276a700915050610bd7565b6276a700810142811115610bcf57610bca814263ffffffff610fc516565b610bd2565b60005b925050505b919050565b6001600160a01b038116600090815260086020526040812060010154600160401b90046001600160401b031680610c19576276a700915050610bd7565b6001600160a01b0383166000908152600860205260409020600101546001600160401b03600160401b909104166276a7000142811115610bcf57610bca814263ffffffff610fc516565b6001600160a01b038116600090815260086020526040812060075482918291610cb790610ca8906001906108fb904290600160401b90046001600160401b0316610fc5565b6006549063ffffffff61108216565b6001820154909450610cec90610cde904290600160401b90046001600160401b0316610fc5565b82549063ffffffff61108216565b925082841015610cfa578392505b6004546001600160a01b031615801590610d1357508315155b8015610d1e57508215155b15610db4576004805460408051630d96a41b60e21b815290516001600160a01b039092169263365a906c92828201926101009290829003018186803b158015610d6657600080fd5b505afa158015610d7a573d6000803e3d6000fd5b505050506040513d610100811015610d9157600080fd5b5060e00151915083610da9838563ffffffff61108216565b81610db057fe5b0491505b509193909250565b6004546000906001600160a01b0316610e0b576040805162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b604482015290519081900360640190fd5b610e1433610bdc565b15610e55576040805162461bcd60e51b815260206004820152600c60248201526b1391515117d513d7d5d0525560a21b604482015290519081900360640190fd5b600080610e6133610c63565b945090925090508215610f8a5760048054604080516308e7352960e21b8152928301869052516001600160a01b039091169163239cd4a491602480830192600092919082900301818387803b158015610eb957600080fd5b505af1158015610ecd573d6000803e3d6000fd5b5050600654610ee5925090508463ffffffff61103b16565b6006819055610f1490610efe848463ffffffff610fc516565b81610f0557fe5b4291900463ffffffff610fc516565b600780546001600160401b0392909216600160401b0267ffffffffffffffff60401b199092169190911790553360009081526008602052604090208054610f61908563ffffffff61103b16565b8155600101805467ffffffffffffffff60401b1916600160401b426001600160401b0316021790555b60408051848152905133917ffaa4a7e6a2ecb2217533f3081ad082d42261efe260c8842dd32a5ebb72011b78919081900360200190a2505090565b60008282111561100c576040805162461bcd60e51b815260206004820152600d60248201526c5355425f554e444552464c4f5760981b604482015290519081900360640190fd5b508082035b92915050565b6110238383835a6110da565b505050565b611035848484845a61112a565b50505050565b81810182811015611011576040805162461bcd60e51b815260206004820152600c60248201526b4144445f4f564552464c4f5760a01b604482015290519081900360640190fd5b81810282158061109a57508183828161109757fe5b04145b611011576040805162461bcd60e51b815260206004820152600c60248201526b4d554c5f4f564552464c4f5760a01b604482015290519081900360640190fd5b6110e684848484611188565b611035576040805162461bcd60e51b815260206004820152601060248201526f5452414e534645525f4641494c55524560801b604482015290519081900360640190fd5b60006111398686868686611284565b905080611180576040805162461bcd60e51b815260206004820152601060248201526f5452414e534645525f4641494c55524560801b604482015290519081900360640190fd5b505050505050565b604080516001600160a01b038086166024830152604480830186905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485938a16928792869282918083835b602083106112045780518252601f1990920191602091820191016111e5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038160008787f1925050503d8060008114611267576040519150601f19603f3d011682016040523d82523d6000602084013e61126c565b606091505b5050905061127981611389565b979650505050505050565b604080516001600160a01b0380871660248301528086166044830152606480830186905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1781529251825160009485938b16928792869282918083835b602083106113085780518252601f1990920191602091820191016112e9565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038160008787f1925050503d806000811461136b576040519150601f19603f3d011682016040523d82523d6000602084013e611370565b606091505b5050905061137d81611389565b98975050505050505050565b600081156113c0573d80156113a957602081146113b257600092506113be565b600192506113be565b60206000803e60005192505b505b509056fea265627a7a723158203a8d4f4a474e4e4cf5f39ea7846c3a11c33125afc08eae8ed969ba8bfb4f4f7b64736f6c634300050b0032000000000000000000000000bbbbca6a901c926f240b89eacb641d8aec7aeafd
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000bbbbca6a901c926f240b89eacb641d8aec7aeafd
-----Decoded View---------------
Arg [0] : _lrcAddress (address): 0xbbbbca6a901c926f240b89eacb641d8aec7aeafd
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000bbbbca6a901c926f240b89eacb641d8aec7aeafd
Swarm Source
bzzr://3a8d4f4a474e4e4cf5f39ea7846c3a11c33125afc08eae8ed969ba8bfb4f4f7b
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.