Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Latest 25 from a total of 92 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Withdraw | 17219444 | 1038 days ago | IN | 0 ETH | 0.00923406 | ||||
| Get Reward | 17219429 | 1038 days ago | IN | 0 ETH | 0.00865466 | ||||
| Get Reward | 17053971 | 1061 days ago | IN | 0 ETH | 0.00184778 | ||||
| Withdraw | 17051879 | 1062 days ago | IN | 0 ETH | 0.00321379 | ||||
| Withdraw | 17019254 | 1066 days ago | IN | 0 ETH | 0.00457987 | ||||
| Get Reward | 17019253 | 1066 days ago | IN | 0 ETH | 0.00440568 | ||||
| Get Reward | 17011264 | 1068 days ago | IN | 0 ETH | 0.00235279 | ||||
| Withdraw | 17011259 | 1068 days ago | IN | 0 ETH | 0.00277642 | ||||
| Withdraw | 17001457 | 1069 days ago | IN | 0 ETH | 0.00267951 | ||||
| Withdraw | 17001254 | 1069 days ago | IN | 0 ETH | 0.00316396 | ||||
| Get Reward | 17001240 | 1069 days ago | IN | 0 ETH | 0.00317237 | ||||
| Withdraw | 16994683 | 1070 days ago | IN | 0 ETH | 0.00252132 | ||||
| Withdraw | 16994670 | 1070 days ago | IN | 0 ETH | 0.00303567 | ||||
| Get Reward | 16994651 | 1070 days ago | IN | 0 ETH | 0.00245682 | ||||
| Get Reward | 16989280 | 1071 days ago | IN | 0 ETH | 0.00259742 | ||||
| Withdraw | 16989269 | 1071 days ago | IN | 0 ETH | 0.004207 | ||||
| Get Reward | 16989158 | 1071 days ago | IN | 0 ETH | 0.00272054 | ||||
| Withdraw | 16989084 | 1071 days ago | IN | 0 ETH | 0.00372543 | ||||
| Get Reward | 16989078 | 1071 days ago | IN | 0 ETH | 0.00338466 | ||||
| Withdraw | 16989075 | 1071 days ago | IN | 0 ETH | 0.0036771 | ||||
| Withdraw | 16989051 | 1071 days ago | IN | 0 ETH | 0.00407265 | ||||
| Get Reward | 16989044 | 1071 days ago | IN | 0 ETH | 0.00406702 | ||||
| Withdraw | 16989013 | 1071 days ago | IN | 0 ETH | 0.00390749 | ||||
| Withdraw | 16988994 | 1071 days ago | IN | 0 ETH | 0.00371675 | ||||
| Withdraw | 16988973 | 1071 days ago | IN | 0 ETH | 0.00282284 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
StakingRewards
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2023-01-15
*/
// File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/security/ReentrancyGuard.sol
// OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol)
pragma solidity ^0.8.0;
/**
* @dev Contract module that helps prevent reentrant calls to a function.
*
* Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
* available, which can be applied to functions to make sure there are no nested
* (reentrant) calls to them.
*
* Note that because there is a single `nonReentrant` guard, functions marked as
* `nonReentrant` may not call one another. This can be worked around by making
* those functions `private`, and then adding `external` `nonReentrant` entry
* points to them.
*
* TIP: If you would like to learn more about reentrancy and alternative ways
* to protect against it, check out our blog post
* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
*/
abstract contract ReentrancyGuard {
// Booleans are more expensive than uint256 or any type that takes up a full
// word because each write operation emits an extra SLOAD to first read the
// slot's contents, replace the bits taken up by the boolean, and then write
// back. This is the compiler's defense against contract upgrades and
// pointer aliasing, and it cannot be disabled.
// The values being non-zero value makes deployment a bit more expensive,
// but in exchange the refund on every call to nonReentrant will be lower in
// amount. Since refunds are capped to a percentage of the total
// transaction's gas, it is best to keep them low in cases like this one, to
// increase the likelihood of the full refund coming into effect.
uint256 private constant _NOT_ENTERED = 1;
uint256 private constant _ENTERED = 2;
uint256 private _status;
constructor() {
_status = _NOT_ENTERED;
}
/**
* @dev Prevents a contract from calling itself, directly or indirectly.
* Calling a `nonReentrant` function from another `nonReentrant`
* function is not supported. It is possible to prevent this from happening
* by making the `nonReentrant` function external, and making it call a
* `private` function that does the actual work.
*/
modifier nonReentrant() {
_nonReentrantBefore();
_;
_nonReentrantAfter();
}
function _nonReentrantBefore() private {
// On the first call to nonReentrant, _status will be _NOT_ENTERED
require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
// Any calls to nonReentrant after this point will fail
_status = _ENTERED;
}
function _nonReentrantAfter() private {
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
_status = _NOT_ENTERED;
}
/**
* @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a
* `nonReentrant` function in the call stack.
*/
function _reentrancyGuardEntered() internal view returns (bool) {
return _status == _ENTERED;
}
}
// File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/math/SafeMath.sol
// OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol)
pragma solidity ^0.8.0;
// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.
/**
* @dev Wrappers over Solidity's arithmetic operations.
*
* NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
* now has built in overflow checking.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
}
/**
* @dev Returns the subtraction of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b > a) return (false, 0);
return (true, a - b);
}
}
/**
* @dev Returns the multiplication of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
}
/**
* @dev Returns the division of two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a / b);
}
}
/**
* @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a % b);
}
}
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
*
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
return a + b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return a - b;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
*
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
return a * b;
}
/**
* @dev Returns the integer division of two unsigned integers, reverting on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator.
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return a / b;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return a % b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {trySub}.
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b <= a, errorMessage);
return a - b;
}
}
/**
* @dev Returns the integer division of two unsigned integers, reverting with custom message on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a / b;
}
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting with custom message when dividing by zero.
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {tryMod}.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a % b;
}
}
}
// File: contracts/1_Storage.sol
pragma solidity 0.8.0;
// https://docs.synthetix.io/contracts/source/contracts/stakingrewards
contract StakingRewards is ReentrancyGuard {
using SafeMath for uint256;
/* ========== STATE VARIABLES ========== */
IERC20 public rewardsToken;
IERC20 public stakingToken;
uint256 public periodFinish = 0;
uint256 public rewardRate = 0;
uint256 public rewardsDuration = 270 days;
uint256 public lastUpdateTime;
uint256 public rewardPerTokenStored;
address public owner;
mapping(address => uint256) public userRewardPerTokenPaid;
mapping(address => uint256) public rewards;
uint256 private _totalSupply;
mapping(address => uint256) private _balances;
modifier onlyOwner{
require(msg.sender == owner, "caller is not owner");
_;
}
/* ========== CONSTRUCTOR ========== */
constructor(
address _owner,
address _rewardsToken,
address _stakingToken
) {
owner = _owner;
rewardsToken = IERC20(_rewardsToken);
stakingToken = IERC20(_stakingToken);
}
/* ========== VIEWS ========== */
function totalSupply() external view returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) external view returns (uint256) {
return _balances[account];
}
function lastTimeRewardApplicable() public view returns (uint256) {
return block.timestamp < periodFinish ? block.timestamp : periodFinish;
}
function rewardPerToken() public view returns (uint256) {
if (_totalSupply == 0) {
return rewardPerTokenStored;
}
return
rewardPerTokenStored.add(
lastTimeRewardApplicable().sub(lastUpdateTime).mul(rewardRate).mul(1e18).div(_totalSupply)
);
}
function earned(address account) public view returns (uint256) {
return _balances[account].mul(rewardPerToken().sub(userRewardPerTokenPaid[account])).div(1e18).add(rewards[account]);
}
function getRewardForDuration() external view returns (uint256) {
return rewardRate.mul(rewardsDuration);
}
/* ========== MUTATIVE FUNCTIONS ========== */
function stake(uint256 amount) external nonReentrant updateReward(msg.sender) {
require(amount > 0, "Cannot stake 0");
_totalSupply = _totalSupply.add(amount);
_balances[msg.sender] = _balances[msg.sender].add(amount);
stakingToken.transferFrom(msg.sender, address(this), amount);
emit Staked(msg.sender, amount);
}
function withdraw(uint256 amount) public nonReentrant updateReward(msg.sender) {
require(amount > 0, "Cannot withdraw 0");
_totalSupply = _totalSupply.sub(amount);
_balances[msg.sender] = _balances[msg.sender].sub(amount);
stakingToken.transfer(msg.sender, amount);
emit Withdrawn(msg.sender, amount);
}
function getReward() public nonReentrant updateReward(msg.sender) {
uint256 reward = rewards[msg.sender];
if (reward > 0) {
rewards[msg.sender] = 0;
rewardsToken.transfer(msg.sender, reward);
emit RewardPaid(msg.sender, reward);
}
}
function exit() external {
withdraw(_balances[msg.sender]);
getReward();
}
/* ========== RESTRICTED FUNCTIONS ========== */
function notifyRewardAmount(uint256 reward) external onlyOwner updateReward(address(0)) {
if (block.timestamp >= periodFinish) {
rewardRate = reward.div(rewardsDuration);
} else {
uint256 remaining = periodFinish.sub(block.timestamp);
uint256 leftover = remaining.mul(rewardRate);
rewardRate = reward.add(leftover).div(rewardsDuration);
}
// Ensure the provided reward amount is not more than the balance in the contract.
// This keeps the reward rate in the right range, preventing overflows due to
// very high values of rewardRate in the earned and rewardsPerToken functions;
// Reward + leftover must be less than 2^256 / 10^18 to avoid overflow.
uint balance = rewardsToken.balanceOf(address(this));
require(rewardRate <= balance.div(rewardsDuration), "Provided reward too high");
lastUpdateTime = block.timestamp;
periodFinish = block.timestamp.add(rewardsDuration);
emit RewardAdded(reward);
}
// Added to support recovering LP Rewards from other systems such as BAL to be distributed to holders
function recoverERC20(address tokenAddress, uint256 tokenAmount) external onlyOwner {
IERC20(tokenAddress).transfer(owner, tokenAmount);
emit Recovered(tokenAddress, tokenAmount);
}
function setRewardsDuration(uint256 _rewardsDuration) external onlyOwner {
require(
block.timestamp > periodFinish,
"Previous rewards period must be complete before changing the duration for the new period"
);
rewardsDuration = _rewardsDuration;
emit RewardsDurationUpdated(rewardsDuration);
}
/* ========== MODIFIERS ========== */
modifier updateReward(address account) {
rewardPerTokenStored = rewardPerToken();
lastUpdateTime = lastTimeRewardApplicable();
if (account != address(0)) {
rewards[account] = earned(account);
userRewardPerTokenPaid[account] = rewardPerTokenStored;
}
_;
}
/* ========== EVENTS ========== */
event RewardAdded(uint256 reward);
event Staked(address indexed user, uint256 amount);
event Withdrawn(address indexed user, uint256 amount);
event RewardPaid(address indexed user, uint256 reward);
event RewardsDurationUpdated(uint256 newDuration);
event Recovered(address token, uint256 amount);
}
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `from` to `to` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address from,
address to,
uint256 amount
) external returns (bool);
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_rewardsToken","type":"address"},{"internalType":"address","name":"_stakingToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Recovered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newDuration","type":"uint256"}],"name":"RewardsDurationUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"earned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"exit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getRewardForDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastTimeRewardApplicable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastUpdateTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"reward","type":"uint256"}],"name":"notifyRewardAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodFinish","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"recoverERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardPerTokenStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rewardsDuration","type":"uint256"}],"name":"setRewardsDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userRewardPerTokenPaid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405260006003556000600455630163f50060055534801561002257600080fd5b506040516110b63803806110b6833981016040819052610041916100a3565b60016000819055600880546001600160a01b039586166001600160a01b0319918216179091558154938516938116939093179055600280549190931691161790556100e5565b80516001600160a01b038116811461009e57600080fd5b919050565b6000806000606084860312156100b7578283fd5b6100c084610087565b92506100ce60208501610087565b91506100dc60408501610087565b90509250925092565b610fc2806100f46000396000f3fe608060405234801561001057600080fd5b506004361061014c5760003560e01c806380faa57d116100c3578063cc1a378f1161007c578063cc1a378f14610256578063cd3daf9d14610269578063d1af0c7d14610271578063df136d6514610279578063e9fad8ee14610281578063ebe2b12b146102895761014c565b806380faa57d146102055780638980f11f1461020d5780638b876347146102205780638da5cb5b14610233578063a694fc3a1461023b578063c8f33c911461024e5761014c565b8063386a952511610115578063386a9525146101b25780633c6b16ab146101ba5780633d18b912146101cd57806370a08231146101d557806372f702f3146101e85780637b0a47ee146101fd5761014c565b80628cc262146101515780630700037d1461017a57806318160ddd1461018d5780631c1f78eb146101955780632e1a7d4d1461019d575b600080fd5b61016461015f366004610caa565b610291565b6040516101719190610eff565b60405180910390f35b610164610188366004610caa565b610311565b610164610323565b61016461032a565b6101b06101ab366004610d0d565b610348565b005b6101646104e2565b6101b06101c8366004610d0d565b6104e8565b6101b06106dc565b6101646101e3366004610caa565b61083a565b6101f0610855565b6040516101719190610d3d565b610164610864565b61016461086a565b6101b061021b366004610cc4565b610882565b61016461022e366004610caa565b610970565b6101f0610982565b6101b0610249366004610d0d565b610991565b610164610b10565b6101b0610264366004610d0d565b610b16565b610164610ba1565b6101f0610bef565b610164610bfe565b6101b0610c04565b610164610c25565b6001600160a01b0381166000908152600a60209081526040808320546009909252822054610309919061030390670de0b6b3a7640000906102fd906102de906102d8610ba1565b90610c2b565b6001600160a01b0388166000908152600c602052604090205490610c3e565b90610c4a565b90610c56565b90505b919050565b600a6020526000908152604090205481565b600b545b90565b6000610343600554600454610c3e90919063ffffffff16565b905090565b610350610c62565b33610359610ba1565b60075561036461086a565b6006556001600160a01b038116156103ab5761037f81610291565b6001600160a01b0382166000908152600a60209081526040808320939093556007546009909152919020555b600082116103d45760405162461bcd60e51b81526004016103cb90610e66565b60405180910390fd5b600b546103e19083610c2b565b600b55336000908152600c60205260409020546103fe9083610c2b565b336000818152600c60205260409081902092909255600254915163a9059cbb60e01b81526001600160a01b039092169163a9059cbb91610442918690600401610d75565b602060405180830381600087803b15801561045c57600080fd5b505af1158015610470573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104949190610ced565b50336001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5836040516104ce9190610eff565b60405180910390a2506104df610c8c565b50565b60055481565b6008546001600160a01b031633146105125760405162461bcd60e51b81526004016103cb90610e39565b600061051c610ba1565b60075561052761086a565b6006556001600160a01b0381161561056e5761054281610291565b6001600160a01b0382166000908152600a60209081526040808320939093556007546009909152919020555b600354421061058d57600554610585908390610c4a565b6004556105d0565b60035460009061059d9042610c2b565b905060006105b660045483610c3e90919063ffffffff16565b6005549091506105ca906102fd8684610c56565b60045550505b6001546040516370a0823160e01b81526000916001600160a01b0316906370a0823190610601903090600401610d3d565b60206040518083038186803b15801561061957600080fd5b505afa15801561062d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106519190610d25565b905061066860055482610c4a90919063ffffffff16565b60045411156106895760405162461bcd60e51b81526004016103cb90610e91565b42600681905560055461069c9190610c56565b6003556040517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d906106cf908590610eff565b60405180910390a1505050565b6106e4610c62565b336106ed610ba1565b6007556106f861086a565b6006556001600160a01b0381161561073f5761071381610291565b6001600160a01b0382166000908152600a60209081526040808320939093556007546009909152919020555b336000908152600a6020526040902054801561082e57336000818152600a602052604080822091909155600154905163a9059cbb60e01b81526001600160a01b039091169163a9059cbb9161079991908590600401610d75565b602060405180830381600087803b1580156107b357600080fd5b505af11580156107c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107eb9190610ced565b50336001600160a01b03167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486826040516108259190610eff565b60405180910390a25b5050610838610c8c565b565b6001600160a01b03166000908152600c602052604090205490565b6002546001600160a01b031681565b60045481565b6000600354421061087d57600354610343565b504290565b6008546001600160a01b031633146108ac5760405162461bcd60e51b81526004016103cb90610e39565b60085460405163a9059cbb60e01b81526001600160a01b038481169263a9059cbb926108e092909116908590600401610d75565b602060405180830381600087803b1580156108fa57600080fd5b505af115801561090e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109329190610ced565b507f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa288282604051610964929190610d75565b60405180910390a15050565b60096020526000908152604090205481565b6008546001600160a01b031681565b610999610c62565b336109a2610ba1565b6007556109ad61086a565b6006556001600160a01b038116156109f4576109c881610291565b6001600160a01b0382166000908152600a60209081526040808320939093556007546009909152919020555b60008211610a145760405162461bcd60e51b81526004016103cb90610e11565b600b54610a219083610c56565b600b55336000908152600c6020526040902054610a3e9083610c56565b336000818152600c6020526040908190209290925560025491516323b872dd60e01b81526001600160a01b03909216916323b872dd91610a849130908790600401610d51565b602060405180830381600087803b158015610a9e57600080fd5b505af1158015610ab2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad69190610ced565b50336001600160a01b03167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d836040516104ce9190610eff565b60065481565b6008546001600160a01b03163314610b405760405162461bcd60e51b81526004016103cb90610e39565b6003544211610b615760405162461bcd60e51b81526004016103cb90610d8e565b60058190556040517ffb46ca5a5e06d4540d6387b930a7c978bce0db5f449ec6b3f5d07c6e1d44f2d390610b96908390610eff565b60405180910390a150565b6000600b5460001415610bb75750600754610327565b610343610be6600b546102fd670de0b6b3a7640000610be0600454610be06006546102d861086a565b90610c3e565b60075490610c56565b6001546001600160a01b031681565b60075481565b336000908152600c6020526040902054610c1d90610348565b6108386106dc565b60035481565b6000610c378284610f5f565b9392505050565b6000610c378284610f40565b6000610c378284610f20565b6000610c378284610f08565b60026000541415610c855760405162461bcd60e51b81526004016103cb90610ec8565b6002600055565b6001600055565b80356001600160a01b038116811461030c57600080fd5b600060208284031215610cbb578081fd5b610c3782610c93565b60008060408385031215610cd6578081fd5b610cdf83610c93565b946020939093013593505050565b600060208284031215610cfe578081fd5b81518015158114610c37578182fd5b600060208284031215610d1e578081fd5b5035919050565b600060208284031215610d36578081fd5b5051919050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b60208082526058908201527f50726576696f7573207265776172647320706572696f64206d7573742062652060408201527f636f6d706c657465206265666f7265206368616e67696e67207468652064757260608201527f6174696f6e20666f7220746865206e657720706572696f640000000000000000608082015260a00190565b6020808252600e908201526d043616e6e6f74207374616b6520360941b604082015260600190565b60208082526013908201527231b0b63632b91034b9903737ba1037bbb732b960691b604082015260600190565b602080825260119082015270043616e6e6f74207769746864726177203607c1b604082015260600190565b60208082526018908201527f50726f76696465642072657761726420746f6f20686967680000000000000000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b90815260200190565b60008219821115610f1b57610f1b610f76565b500190565b600082610f3b57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615610f5a57610f5a610f76565b500290565b600082821015610f7157610f71610f76565b500390565b634e487b7160e01b600052601160045260246000fdfea26469706673582212206dfe39b7a510d2b52fe55683a91da44fedc6342114ff83c1667f41c1b90dc0df64736f6c63430008000033000000000000000000000000a088c809f08dcbb1b932fab5d93f28acc9e6702d000000000000000000000000e89a194d366a3f18b06ced6474dc7daba66efa83000000000000000000000000e89a194d366a3f18b06ced6474dc7daba66efa83
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061014c5760003560e01c806380faa57d116100c3578063cc1a378f1161007c578063cc1a378f14610256578063cd3daf9d14610269578063d1af0c7d14610271578063df136d6514610279578063e9fad8ee14610281578063ebe2b12b146102895761014c565b806380faa57d146102055780638980f11f1461020d5780638b876347146102205780638da5cb5b14610233578063a694fc3a1461023b578063c8f33c911461024e5761014c565b8063386a952511610115578063386a9525146101b25780633c6b16ab146101ba5780633d18b912146101cd57806370a08231146101d557806372f702f3146101e85780637b0a47ee146101fd5761014c565b80628cc262146101515780630700037d1461017a57806318160ddd1461018d5780631c1f78eb146101955780632e1a7d4d1461019d575b600080fd5b61016461015f366004610caa565b610291565b6040516101719190610eff565b60405180910390f35b610164610188366004610caa565b610311565b610164610323565b61016461032a565b6101b06101ab366004610d0d565b610348565b005b6101646104e2565b6101b06101c8366004610d0d565b6104e8565b6101b06106dc565b6101646101e3366004610caa565b61083a565b6101f0610855565b6040516101719190610d3d565b610164610864565b61016461086a565b6101b061021b366004610cc4565b610882565b61016461022e366004610caa565b610970565b6101f0610982565b6101b0610249366004610d0d565b610991565b610164610b10565b6101b0610264366004610d0d565b610b16565b610164610ba1565b6101f0610bef565b610164610bfe565b6101b0610c04565b610164610c25565b6001600160a01b0381166000908152600a60209081526040808320546009909252822054610309919061030390670de0b6b3a7640000906102fd906102de906102d8610ba1565b90610c2b565b6001600160a01b0388166000908152600c602052604090205490610c3e565b90610c4a565b90610c56565b90505b919050565b600a6020526000908152604090205481565b600b545b90565b6000610343600554600454610c3e90919063ffffffff16565b905090565b610350610c62565b33610359610ba1565b60075561036461086a565b6006556001600160a01b038116156103ab5761037f81610291565b6001600160a01b0382166000908152600a60209081526040808320939093556007546009909152919020555b600082116103d45760405162461bcd60e51b81526004016103cb90610e66565b60405180910390fd5b600b546103e19083610c2b565b600b55336000908152600c60205260409020546103fe9083610c2b565b336000818152600c60205260409081902092909255600254915163a9059cbb60e01b81526001600160a01b039092169163a9059cbb91610442918690600401610d75565b602060405180830381600087803b15801561045c57600080fd5b505af1158015610470573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104949190610ced565b50336001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5836040516104ce9190610eff565b60405180910390a2506104df610c8c565b50565b60055481565b6008546001600160a01b031633146105125760405162461bcd60e51b81526004016103cb90610e39565b600061051c610ba1565b60075561052761086a565b6006556001600160a01b0381161561056e5761054281610291565b6001600160a01b0382166000908152600a60209081526040808320939093556007546009909152919020555b600354421061058d57600554610585908390610c4a565b6004556105d0565b60035460009061059d9042610c2b565b905060006105b660045483610c3e90919063ffffffff16565b6005549091506105ca906102fd8684610c56565b60045550505b6001546040516370a0823160e01b81526000916001600160a01b0316906370a0823190610601903090600401610d3d565b60206040518083038186803b15801561061957600080fd5b505afa15801561062d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106519190610d25565b905061066860055482610c4a90919063ffffffff16565b60045411156106895760405162461bcd60e51b81526004016103cb90610e91565b42600681905560055461069c9190610c56565b6003556040517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d906106cf908590610eff565b60405180910390a1505050565b6106e4610c62565b336106ed610ba1565b6007556106f861086a565b6006556001600160a01b0381161561073f5761071381610291565b6001600160a01b0382166000908152600a60209081526040808320939093556007546009909152919020555b336000908152600a6020526040902054801561082e57336000818152600a602052604080822091909155600154905163a9059cbb60e01b81526001600160a01b039091169163a9059cbb9161079991908590600401610d75565b602060405180830381600087803b1580156107b357600080fd5b505af11580156107c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107eb9190610ced565b50336001600160a01b03167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486826040516108259190610eff565b60405180910390a25b5050610838610c8c565b565b6001600160a01b03166000908152600c602052604090205490565b6002546001600160a01b031681565b60045481565b6000600354421061087d57600354610343565b504290565b6008546001600160a01b031633146108ac5760405162461bcd60e51b81526004016103cb90610e39565b60085460405163a9059cbb60e01b81526001600160a01b038481169263a9059cbb926108e092909116908590600401610d75565b602060405180830381600087803b1580156108fa57600080fd5b505af115801561090e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109329190610ced565b507f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa288282604051610964929190610d75565b60405180910390a15050565b60096020526000908152604090205481565b6008546001600160a01b031681565b610999610c62565b336109a2610ba1565b6007556109ad61086a565b6006556001600160a01b038116156109f4576109c881610291565b6001600160a01b0382166000908152600a60209081526040808320939093556007546009909152919020555b60008211610a145760405162461bcd60e51b81526004016103cb90610e11565b600b54610a219083610c56565b600b55336000908152600c6020526040902054610a3e9083610c56565b336000818152600c6020526040908190209290925560025491516323b872dd60e01b81526001600160a01b03909216916323b872dd91610a849130908790600401610d51565b602060405180830381600087803b158015610a9e57600080fd5b505af1158015610ab2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad69190610ced565b50336001600160a01b03167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d836040516104ce9190610eff565b60065481565b6008546001600160a01b03163314610b405760405162461bcd60e51b81526004016103cb90610e39565b6003544211610b615760405162461bcd60e51b81526004016103cb90610d8e565b60058190556040517ffb46ca5a5e06d4540d6387b930a7c978bce0db5f449ec6b3f5d07c6e1d44f2d390610b96908390610eff565b60405180910390a150565b6000600b5460001415610bb75750600754610327565b610343610be6600b546102fd670de0b6b3a7640000610be0600454610be06006546102d861086a565b90610c3e565b60075490610c56565b6001546001600160a01b031681565b60075481565b336000908152600c6020526040902054610c1d90610348565b6108386106dc565b60035481565b6000610c378284610f5f565b9392505050565b6000610c378284610f40565b6000610c378284610f20565b6000610c378284610f08565b60026000541415610c855760405162461bcd60e51b81526004016103cb90610ec8565b6002600055565b6001600055565b80356001600160a01b038116811461030c57600080fd5b600060208284031215610cbb578081fd5b610c3782610c93565b60008060408385031215610cd6578081fd5b610cdf83610c93565b946020939093013593505050565b600060208284031215610cfe578081fd5b81518015158114610c37578182fd5b600060208284031215610d1e578081fd5b5035919050565b600060208284031215610d36578081fd5b5051919050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b60208082526058908201527f50726576696f7573207265776172647320706572696f64206d7573742062652060408201527f636f6d706c657465206265666f7265206368616e67696e67207468652064757260608201527f6174696f6e20666f7220746865206e657720706572696f640000000000000000608082015260a00190565b6020808252600e908201526d043616e6e6f74207374616b6520360941b604082015260600190565b60208082526013908201527231b0b63632b91034b9903737ba1037bbb732b960691b604082015260600190565b602080825260119082015270043616e6e6f74207769746864726177203607c1b604082015260600190565b60208082526018908201527f50726f76696465642072657761726420746f6f20686967680000000000000000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b90815260200190565b60008219821115610f1b57610f1b610f76565b500190565b600082610f3b57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615610f5a57610f5a610f76565b500290565b600082821015610f7157610f71610f76565b500390565b634e487b7160e01b600052601160045260246000fdfea26469706673582212206dfe39b7a510d2b52fe55683a91da44fedc6342114ff83c1667f41c1b90dc0df64736f6c63430008000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000a088c809f08dcbb1b932fab5d93f28acc9e6702d000000000000000000000000e89a194d366a3f18b06ced6474dc7daba66efa83000000000000000000000000e89a194d366a3f18b06ced6474dc7daba66efa83
-----Decoded View---------------
Arg [0] : _owner (address): 0xA088c809f08DCbB1b932FaB5d93f28Acc9E6702D
Arg [1] : _rewardsToken (address): 0xe89A194D366A3f18B06Ced6474DC7dAba66EFa83
Arg [2] : _stakingToken (address): 0xe89A194D366A3f18B06Ced6474DC7dAba66EFa83
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000a088c809f08dcbb1b932fab5d93f28acc9e6702d
Arg [1] : 000000000000000000000000e89a194d366a3f18b06ced6474dc7daba66efa83
Arg [2] : 000000000000000000000000e89a194d366a3f18b06ced6474dc7daba66efa83
Deployed Bytecode Sourcemap
10512:5904:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12308:198;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11007:42;;;;;;:::i;:::-;;:::i;11586:93::-;;;:::i;12514:121::-;;;:::i;13070:353::-;;;;;;:::i;:::-;;:::i;:::-;;10788:41;;;:::i;13903:1069::-;;;;;;:::i;:::-;;:::i;13431:303::-;;;:::i;11687:112::-;;;;;;:::i;:::-;;:::i;10681:26::-;;;:::i;:::-;;;;;;;:::i;10752:29::-;;;:::i;11807:155::-;;;:::i;15087:204::-;;;;;;:::i;:::-;;:::i;10943:57::-;;;;;;:::i;:::-;;:::i;10914:20::-;;;:::i;12697:365::-;;;;;;:::i;:::-;;:::i;10836:29::-;;;:::i;15299:360::-;;;;;;:::i;:::-;;:::i;11970:330::-;;;:::i;10648:26::-;;;:::i;10872:35::-;;;:::i;13742:97::-;;;:::i;10714:31::-;;;:::i;12308:198::-;-1:-1:-1;;;;;12481:16:0;;12362:7;12481:16;;;:7;:16;;;;;;;;;12433:22;:31;;;;;;12389:109;;12481:16;12389:87;;12471:4;;12389:77;;12412:53;;:16;:14;:16::i;:::-;:20;;:53::i;:::-;-1:-1:-1;;;;;12389:18:0;;;;;;:9;:18;;;;;;;:22;:77::i;:::-;:81;;:87::i;:::-;:91;;:109::i;:::-;12382:116;;12308:198;;;;:::o;11007:42::-;;;;;;;;;;;;;:::o;11586:93::-;11659:12;;11586:93;;:::o;12514:121::-;12569:7;12596:31;12611:15;;12596:10;;:14;;:31;;;;:::i;:::-;12589:38;;12514:121;:::o;13070:353::-;2383:21;:19;:21::i;:::-;13137:10:::1;15785:16;:14;:16::i;:::-;15762:20;:39:::0;15829:26:::1;:24;:26::i;:::-;15812:14;:43:::0;-1:-1:-1;;;;;15870:21:0;::::1;::::0;15866:157:::1;;15927:15;15934:7;15927:6;:15::i;:::-;-1:-1:-1::0;;;;;15908:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;:34;;;;15991:20:::1;::::0;15957:22:::1;:31:::0;;;;;;:54;15866:157:::1;13177:1:::2;13168:6;:10;13160:40;;;;-1:-1:-1::0;;;13160:40:0::2;;;;;;;:::i;:::-;;;;;;;;;13226:12;::::0;:24:::2;::::0;13243:6;13226:16:::2;:24::i;:::-;13211:12;:39:::0;13295:10:::2;13285:21;::::0;;;:9:::2;:21;::::0;;;;;:33:::2;::::0;13311:6;13285:25:::2;:33::i;:::-;13271:10;13261:21;::::0;;;:9:::2;:21;::::0;;;;;;:57;;;;13329:12:::2;::::0;:41;;-1:-1:-1;;;13329:41:0;;-1:-1:-1;;;;;13329:12:0;;::::2;::::0;:21:::2;::::0;:41:::2;::::0;13363:6;;13329:41:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13396:10;-1:-1:-1::0;;;;;13386:29:0::2;;13408:6;13386:29;;;;;;:::i;:::-;;;;;;;;2415:1:::1;2427:20:::0;:18;:20::i;:::-;13070:353;:::o;10788:41::-;;;;:::o;13903:1069::-;11198:5;;-1:-1:-1;;;;;11198:5:0;11184:10;:19;11176:51;;;;-1:-1:-1;;;11176:51:0;;;;;;;:::i;:::-;13987:1:::1;15785:16;:14;:16::i;:::-;15762:20;:39:::0;15829:26:::1;:24;:26::i;:::-;15812:14;:43:::0;-1:-1:-1;;;;;15870:21:0;::::1;::::0;15866:157:::1;;15927:15;15934:7;15927:6;:15::i;:::-;-1:-1:-1::0;;;;;15908:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;:34;;;;15991:20:::1;::::0;15957:22:::1;:31:::0;;;;;;:54;15866:157:::1;14025:12:::2;;14006:15;:31;14002:318;;14078:15;::::0;14067:27:::2;::::0;:6;;:10:::2;:27::i;:::-;14054:10;:40:::0;14002:318:::2;;;14147:12;::::0;14127:17:::2;::::0;14147:33:::2;::::0;14164:15:::2;14147:16;:33::i;:::-;14127:53;;14195:16;14214:25;14228:10;;14214:9;:13;;:25;;;;:::i;:::-;14292:15;::::0;14195:44;;-1:-1:-1;14267:41:0::2;::::0;:20:::2;:6:::0;14195:44;14267:10:::2;:20::i;:41::-;14254:10;:54:::0;-1:-1:-1;;14002:318:0::2;14695:12;::::0;:37:::2;::::0;-1:-1:-1;;;14695:37:0;;14680:12:::2;::::0;-1:-1:-1;;;;;14695:12:0::2;::::0;:22:::2;::::0;:37:::2;::::0;14726:4:::2;::::0;14695:37:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14680:52;;14765:28;14777:15;;14765:7;:11;;:28;;;;:::i;:::-;14751:10;;:42;;14743:79;;;;-1:-1:-1::0;;;14743:79:0::2;;;;;;;:::i;:::-;14852:15;14835:14;:32:::0;;;14913:15:::2;::::0;14893:36:::2;::::0;14852:15;14893:19:::2;:36::i;:::-;14878:12;:51:::0;14945:19:::2;::::0;::::2;::::0;::::2;::::0;14957:6;;14945:19:::2;:::i;:::-;;;;;;;;16033:1;11238::::1;13903:1069:::0;:::o;13431:303::-;2383:21;:19;:21::i;:::-;13485:10:::1;15785:16;:14;:16::i;:::-;15762:20;:39:::0;15829:26:::1;:24;:26::i;:::-;15812:14;:43:::0;-1:-1:-1;;;;;15870:21:0;::::1;::::0;15866:157:::1;;15927:15;15934:7;15927:6;:15::i;:::-;-1:-1:-1::0;;;;;15908:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;:34;;;;15991:20:::1;::::0;15957:22:::1;:31:::0;;;;;;:54;15866:157:::1;13533:10:::2;13508:14;13525:19:::0;;;:7:::2;:19;::::0;;;;;13559:10;;13555:172:::2;;13594:10;13608:1;13586:19:::0;;;:7:::2;:19;::::0;;;;;:23;;;;13624:12:::2;::::0;:41;;-1:-1:-1;;;13624:41:0;;-1:-1:-1;;;;;13624:12:0;;::::2;::::0;:21:::2;::::0;:41:::2;::::0;13594:10;13658:6;;13624:41:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13696:10;-1:-1:-1::0;;;;;13685:30:0::2;;13708:6;13685:30;;;;;;:::i;:::-;;;;;;;;13555:172;16033:1;2415::::1;2427:20:::0;:18;:20::i;:::-;13431:303::o;11687:112::-;-1:-1:-1;;;;;11773:18:0;11746:7;11773:18;;;:9;:18;;;;;;;11687:112::o;10681:26::-;;;-1:-1:-1;;;;;10681:26:0;;:::o;10752:29::-;;;;:::o;11807:155::-;11864:7;11909:12;;11891:15;:30;:63;;11942:12;;11891:63;;;-1:-1:-1;11924:15:0;;11807:155::o;15087:204::-;11198:5;;-1:-1:-1;;;;;11198:5:0;11184:10;:19;11176:51;;;;-1:-1:-1;;;11176:51:0;;;;;;;:::i;:::-;15212:5:::1;::::0;15182:49:::1;::::0;-1:-1:-1;;;15182:49:0;;-1:-1:-1;;;;;15182:29:0;;::::1;::::0;::::1;::::0;:49:::1;::::0;15212:5;;::::1;::::0;15219:11;;15182:49:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15247:36;15257:12;15271:11;15247:36;;;;;;;:::i;:::-;;;;;;;;15087:204:::0;;:::o;10943:57::-;;;;;;;;;;;;;:::o;10914:20::-;;;-1:-1:-1;;;;;10914:20:0;;:::o;12697:365::-;2383:21;:19;:21::i;:::-;12763:10:::1;15785:16;:14;:16::i;:::-;15762:20;:39:::0;15829:26:::1;:24;:26::i;:::-;15812:14;:43:::0;-1:-1:-1;;;;;15870:21:0;::::1;::::0;15866:157:::1;;15927:15;15934:7;15927:6;:15::i;:::-;-1:-1:-1::0;;;;;15908:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;:34;;;;15991:20:::1;::::0;15957:22:::1;:31:::0;;;;;;:54;15866:157:::1;12803:1:::2;12794:6;:10;12786:37;;;;-1:-1:-1::0;;;12786:37:0::2;;;;;;;:::i;:::-;12849:12;::::0;:24:::2;::::0;12866:6;12849:16:::2;:24::i;:::-;12834:12;:39:::0;12918:10:::2;12908:21;::::0;;;:9:::2;:21;::::0;;;;;:33:::2;::::0;12934:6;12908:25:::2;:33::i;:::-;12894:10;12884:21;::::0;;;:9:::2;:21;::::0;;;;;;:57;;;;12952:12:::2;::::0;:60;;-1:-1:-1;;;12952:60:0;;-1:-1:-1;;;;;12952:12:0;;::::2;::::0;:25:::2;::::0;:60:::2;::::0;12998:4:::2;::::0;13005:6;;12952:60:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13035:10;-1:-1:-1::0;;;;;13028:26:0::2;;13047:6;13028:26;;;;;;:::i;10836:29::-:0;;;;:::o;15299:360::-;11198:5;;-1:-1:-1;;;;;11198:5:0;11184:10;:19;11176:51;;;;-1:-1:-1;;;11176:51:0;;;;;;;:::i;:::-;15423:12:::1;;15405:15;:30;15383:168;;;;-1:-1:-1::0;;;15383:168:0::1;;;;;;;:::i;:::-;15562:15;:34:::0;;;15612:39:::1;::::0;::::1;::::0;::::1;::::0;15580:16;;15612:39:::1;:::i;:::-;;;;;;;;15299:360:::0;:::o;11970:330::-;12017:7;12041:12;;12057:1;12041:17;12037:77;;;-1:-1:-1;12082:20:0;;12075:27;;12037:77;12144:148;12187:90;12264:12;;12187:72;12254:4;12187:62;12238:10;;12187:46;12218:14;;12187:26;:24;:26::i;:46::-;:50;;:62::i;:90::-;12144:20;;;:24;:148::i;10648:26::-;;;-1:-1:-1;;;;;10648:26:0;;:::o;10872:35::-;;;;:::o;13742:97::-;13797:10;13787:21;;;;:9;:21;;;;;;13778:31;;:8;:31::i;:::-;13820:11;:9;:11::i;10714:31::-;;;;:::o;6588:98::-;6646:7;6673:5;6677:1;6673;:5;:::i;:::-;6666:12;6588:98;-1:-1:-1;;;6588:98:0:o;6945:::-;7003:7;7030:5;7034:1;7030;:5;:::i;7344:98::-;7402:7;7429:5;7433:1;7429;:5;:::i;6207:98::-;6265:7;6292:5;6296:1;6292;:5;:::i;2463:293::-;1865:1;2597:7;;:19;;2589:63;;;;-1:-1:-1;;;2589:63:0;;;;;;;:::i;:::-;1865:1;2730:7;:18;2463:293::o;2764:213::-;1821:1;2947:7;:22;2764:213::o;14:175:1:-;84:20;;-1:-1:-1;;;;;133:31:1;;123:42;;113:2;;179:1;176;169:12;194:198;;306:2;294:9;285:7;281:23;277:32;274:2;;;327:6;319;312:22;274:2;355:31;376:9;355:31;:::i;397:266::-;;;526:2;514:9;505:7;501:23;497:32;494:2;;;547:6;539;532:22;494:2;575:31;596:9;575:31;:::i;:::-;565:41;653:2;638:18;;;;625:32;;-1:-1:-1;;;484:179:1:o;668:297::-;;788:2;776:9;767:7;763:23;759:32;756:2;;;809:6;801;794:22;756:2;846:9;840:16;899:5;892:13;885:21;878:5;875:32;865:2;;926:6;918;911:22;970:190;;1082:2;1070:9;1061:7;1057:23;1053:32;1050:2;;;1103:6;1095;1088:22;1050:2;-1:-1:-1;1131:23:1;;1040:120;-1:-1:-1;1040:120:1:o;1165:194::-;;1288:2;1276:9;1267:7;1263:23;1259:32;1256:2;;;1309:6;1301;1294:22;1256:2;-1:-1:-1;1337:16:1;;1246:113;-1:-1:-1;1246:113:1:o;1364:203::-;-1:-1:-1;;;;;1528:32:1;;;;1510:51;;1498:2;1483:18;;1465:102::o;1572:375::-;-1:-1:-1;;;;;1830:15:1;;;1812:34;;1882:15;;;;1877:2;1862:18;;1855:43;1929:2;1914:18;;1907:34;;;;1762:2;1747:18;;1729:218::o;1952:274::-;-1:-1:-1;;;;;2144:32:1;;;;2126:51;;2208:2;2193:18;;2186:34;2114:2;2099:18;;2081:145::o;2454:492::-;2656:2;2638:21;;;2695:2;2675:18;;;2668:30;2734:34;2729:2;2714:18;;2707:62;2805:34;2800:2;2785:18;;2778:62;2877:26;2871:3;2856:19;;2849:55;2936:3;2921:19;;2628:318::o;2951:338::-;3153:2;3135:21;;;3192:2;3172:18;;;3165:30;-1:-1:-1;;;3226:2:1;3211:18;;3204:44;3280:2;3265:18;;3125:164::o;3294:343::-;3496:2;3478:21;;;3535:2;3515:18;;;3508:30;-1:-1:-1;;;3569:2:1;3554:18;;3547:49;3628:2;3613:18;;3468:169::o;3642:341::-;3844:2;3826:21;;;3883:2;3863:18;;;3856:30;-1:-1:-1;;;3917:2:1;3902:18;;3895:47;3974:2;3959:18;;3816:167::o;3988:348::-;4190:2;4172:21;;;4229:2;4209:18;;;4202:30;4268:26;4263:2;4248:18;;4241:54;4327:2;4312:18;;4162:174::o;4341:355::-;4543:2;4525:21;;;4582:2;4562:18;;;4555:30;4621:33;4616:2;4601:18;;4594:61;4687:2;4672:18;;4515:181::o;4701:177::-;4847:25;;;4835:2;4820:18;;4802:76::o;4883:128::-;;4954:1;4950:6;4947:1;4944:13;4941:2;;;4960:18;;:::i;:::-;-1:-1:-1;4996:9:1;;4931:80::o;5016:217::-;;5082:1;5072:2;;-1:-1:-1;;;5107:31:1;;5161:4;5158:1;5151:15;5189:4;5114:1;5179:15;5072:2;-1:-1:-1;5218:9:1;;5062:171::o;5238:168::-;;5344:1;5340;5336:6;5332:14;5329:1;5326:21;5321:1;5314:9;5307:17;5303:45;5300:2;;;5351:18;;:::i;:::-;-1:-1:-1;5391:9:1;;5290:116::o;5411:125::-;;5479:1;5476;5473:8;5470:2;;;5484:18;;:::i;:::-;-1:-1:-1;5521:9:1;;5460:76::o;5541:127::-;5602:10;5597:3;5593:20;5590:1;5583:31;5633:4;5630:1;5623:15;5657:4;5654:1;5647:15
Swarm Source
ipfs://6dfe39b7a510d2b52fe55683a91da44fedc6342114ff83c1667f41c1b90dc0df
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.