Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Latest 25 from a total of 101 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Withdraw | 11568533 | 1898 days ago | IN | 0 ETH | 0.00329284 | ||||
| Withdraw | 11568510 | 1898 days ago | IN | 0 ETH | 0.01684995 | ||||
| Exit | 11568221 | 1898 days ago | IN | 0 ETH | 0.01584564 | ||||
| Withdraw | 11568176 | 1898 days ago | IN | 0 ETH | 0.01606361 | ||||
| Withdraw | 11568116 | 1898 days ago | IN | 0 ETH | 0.00564461 | ||||
| Exit | 11567975 | 1898 days ago | IN | 0 ETH | 0.00725285 | ||||
| Exit | 11567930 | 1898 days ago | IN | 0 ETH | 0.00577305 | ||||
| Withdraw | 11567905 | 1898 days ago | IN | 0 ETH | 0.00509284 | ||||
| Get Reward | 11567667 | 1898 days ago | IN | 0 ETH | 0.00366964 | ||||
| Withdraw | 11567660 | 1898 days ago | IN | 0 ETH | 0.00539198 | ||||
| Get Reward | 11567593 | 1898 days ago | IN | 0 ETH | 0.00323161 | ||||
| Withdraw | 11567582 | 1898 days ago | IN | 0 ETH | 0.00629132 | ||||
| Get Reward | 11567577 | 1898 days ago | IN | 0 ETH | 0.00573109 | ||||
| Exit | 11567328 | 1898 days ago | IN | 0 ETH | 0.00715313 | ||||
| Get Reward | 11567192 | 1898 days ago | IN | 0 ETH | 0.00524046 | ||||
| Stake | 11566883 | 1898 days ago | IN | 0 ETH | 0.0050013 | ||||
| Exit | 11566807 | 1898 days ago | IN | 0 ETH | 0.00848302 | ||||
| Withdraw | 11566800 | 1898 days ago | IN | 0 ETH | 0.00486665 | ||||
| Get Reward | 11566790 | 1898 days ago | IN | 0 ETH | 0.00454173 | ||||
| Get Reward | 11566551 | 1898 days ago | IN | 0 ETH | 0.00562875 | ||||
| Get Reward | 11566426 | 1898 days ago | IN | 0 ETH | 0.00383778 | ||||
| Get Reward | 11566046 | 1898 days ago | IN | 0 ETH | 0.00585184 | ||||
| Get Reward | 11565779 | 1898 days ago | IN | 0 ETH | 0.00595016 | ||||
| Exit | 11564930 | 1899 days ago | IN | 0 ETH | 0.00957376 | ||||
| Exit | 11564765 | 1899 days ago | IN | 0 ETH | 0.00944336 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
USDTPoolDelegator
Compiler Version
v0.5.17+commit.d19bba13
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2020-12-28
*/
/*
____ __ __ __ _
/ __/__ __ ___ / /_ / / ___ / /_ (_)__ __
_\ \ / // // _ \/ __// _ \/ -_)/ __// / \ \ /
/___/ \_, //_//_/\__//_//_/\__/ \__//_/ /_\_\
/___/
* Synthetix: SeedRewardPool.sol
*
* Docs: https://docs.synthetix.io/
*
*
* MIT License
* ===========
*
* Copyright (c) 2020 Synthetix
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
*/
// File: @openzeppelin/contracts/math/Math.sol
pragma solidity ^0.5.0;
/**
* @dev Standard math utilities missing in the Solidity language.
*/
library Math {
/**
* @dev Returns the largest of two numbers.
*/
function max(uint256 a, uint256 b) internal pure returns (uint256) {
return a >= b ? a : b;
}
/**
* @dev Returns the smallest of two numbers.
*/
function min(uint256 a, uint256 b) internal pure returns (uint256) {
return a < b ? a : b;
}
/**
* @dev Returns the average of two numbers. The result is rounded towards
* zero.
*/
function average(uint256 a, uint256 b) internal pure returns (uint256) {
// (a + b) / 2 can overflow, so we distribute
return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2);
}
}
// File: @openzeppelin/contracts/math/SafeMath.sol
pragma solidity ^0.5.0;
/**
* @dev Wrappers over Solidity's arithmetic operations with added overflow
* checks.
*
* Arithmetic operations in Solidity wrap on overflow. This can easily result
* in bugs, because programmers usually assume that an overflow raises an
* error, which is the standard behavior in high level programming languages.
* `SafeMath` restores this intuition by reverting the transaction when an
* operation overflows.
*
* Using this library instead of the unchecked operations eliminates an entire
* class of bugs, so it's recommended to use it always.
*/
library SafeMath {
/**
* @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) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
/**
* @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 sub(a, b, "SafeMath: subtraction overflow");
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
* - Subtraction cannot overflow.
*
* _Available since v2.4.0._
*/
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
/**
* @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) {
// 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 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts 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) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts 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.
*
* _Available since v2.4.0._
*/
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
// Solidity only automatically asserts when dividing by 0
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts 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 mod(a, b, "SafeMath: modulo by zero");
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts with custom message 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.
*
* _Available since v2.4.0._
*/
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
// File: @openzeppelin/contracts/GSN/Context.sol
pragma solidity ^0.5.0;
/*
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with GSN meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
contract Context {
// Empty internal constructor, to prevent people from mistakenly deploying
// an instance of this contract, which should be used via inheritance.
constructor () internal { }
// solhint-disable-previous-line no-empty-blocks
function _msgSender() internal view returns (address payable) {
return msg.sender;
}
function _msgData() internal view returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
// File: @openzeppelin/contracts/ownership/Ownable.sol
pragma solidity ^0.5.0;
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor () internal {
_owner = _msgSender();
emit OwnershipTransferred(address(0), _owner);
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(isOwner(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Returns true if the caller is the current owner.
*/
function isOwner() public view returns (bool) {
return _msgSender() == _owner;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public onlyOwner {
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
*/
function _transferOwnership(address newOwner) internal {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
// File: @openzeppelin/contracts/token/ERC20/IERC20.sol
pragma solidity ^0.5.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP. Does not include
* the optional functions; to access them see {ERC20Detailed}.
*/
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);
}
// File: @openzeppelin/contracts/utils/Address.sol
pragma solidity ^0.5.0;
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* This test is non-exhaustive, and there may be false-negatives: during the
* execution of a contract's constructor, its address will be reported as
* not containing a contract.
*
* IMPORTANT: It is unsafe to assume that an address for which this
* function returns false is an externally-owned account (EOA) and not a
* contract.
*/
function isContract(address account) internal view returns (bool) {
// This method relies in extcodesize, which returns 0 for contracts in
// construction, since the code is only stored at the end of the
// constructor execution.
// According to EIP-1052, 0x0 is the value returned for not-yet created accounts
// and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
// for accounts without code, i.e. `keccak256('')`
bytes32 codehash;
bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
// solhint-disable-next-line no-inline-assembly
assembly { codehash := extcodehash(account) }
return (codehash != 0x0 && codehash != accountHash);
}
/**
* @dev Converts an `address` into `address payable`. Note that this is
* simply a type cast: the actual underlying value is not changed.
*
* _Available since v2.4.0._
*/
function toPayable(address account) internal pure returns (address payable) {
return address(uint160(account));
}
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*
* _Available since v2.4.0._
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
// solhint-disable-next-line avoid-call-value
(bool success, ) = recipient.call.value(amount)("");
require(success, "Address: unable to send value, recipient may have reverted");
}
}
// File: @openzeppelin/contracts/token/ERC20/SafeERC20.sol
pragma solidity ^0.5.0;
/**
* @title SafeERC20
* @dev Wrappers around ERC20 operations that throw on failure (when the token
* contract returns false). Tokens that return no value (and instead revert or
* throw on failure) are also supported, non-reverting calls are assumed to be
* successful.
* To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,
* which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
*/
library SafeERC20 {
using SafeMath for uint256;
using Address for address;
function safeTransfer(IERC20 token, address to, uint256 value) internal {
callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
}
function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
}
function safeApprove(IERC20 token, address spender, uint256 value) internal {
// safeApprove should only be called when setting an initial allowance,
// or when resetting it to zero. To increase and decrease it, use
// 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
// solhint-disable-next-line max-line-length
require((value == 0) || (token.allowance(address(this), spender) == 0),
"SafeERC20: approve from non-zero to non-zero allowance"
);
callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
}
function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
uint256 newAllowance = token.allowance(address(this), spender).add(value);
callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {
uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero");
callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
/**
* @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
* on the return value: the return value is optional (but if data is returned, it must not be false).
* @param token The token targeted by the call.
* @param data The call data (encoded using abi.encode or one of its variants).
*/
function callOptionalReturn(IERC20 token, bytes memory data) private {
// We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
// we're implementing it ourselves.
// A Solidity high level call has three parts:
// 1. The target address is checked to verify it contains contract code
// 2. The call itself is made, and success asserted
// 3. The return value is decoded, which in turn checks the size of the returned data.
// solhint-disable-next-line max-line-length
require(address(token).isContract(), "SafeERC20: call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = address(token).call(data);
require(success, "SafeERC20: low-level call failed");
if (returndata.length > 0) { // Return data is optional
// solhint-disable-next-line max-line-length
require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
}
}
}
pragma solidity ^0.5.0;
contract PoolStorage {
using SafeMath for uint256;
using SafeERC20 for IERC20;
address public gov;
address public pendingGov;
string poolname;
IERC20 public basetoken;
IERC20 public rewardtoken;
uint256 public DURATION;
uint256 public initreward;
uint256 public starttime;
uint256 public periodFinish;
uint256 public rewardRate;
uint256 public lastUpdateTime;
uint256 public rewardPerTokenStored;
address public implementation;
mapping(address => uint256) public userRewardPerTokenPaid;
mapping(address => uint256) public rewards;
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);
}
contract InitPoolCore is PoolStorage {
uint256 private _totalSupply;
mapping(address => uint256) private _balances;
modifier onlyGov() {
require(msg.sender == gov, "Caller is not gov");
_;
}
modifier checkStart() {
require(block.timestamp >= starttime,"not start");
_;
}
modifier updateReward(address account) {
rewardPerTokenStored = rewardPerToken();
lastUpdateTime = lastTimeRewardApplicable();
if (account != address(0)) {
rewards[account] = earned(account);
userRewardPerTokenPaid[account] = rewardPerTokenStored;
}
_;
}
function _setPendingGov(address pendingGov_)
external
onlyGov returns(bool)
{
pendingGov = pendingGov_;
return true;
}
function _acceptGov()
external returns(bool)
{
require(msg.sender == pendingGov, "!pending");
gov = pendingGov;
pendingGov = address(0);
return true;
}
function initialize(string memory _poolname, address _rewardtoken, address _basetoken, uint256 _starttime, uint256 _period, uint256 _initreward) public onlyGov {
require(initreward == uint256(0), 'This pool has been initialized');
poolname = _poolname;
rewardtoken = IERC20(_rewardtoken);
basetoken = IERC20(_basetoken);
starttime = _starttime;
DURATION = _period;
initreward = _initreward;
rewardRate = _initreward.div(DURATION);
lastUpdateTime = starttime;
periodFinish = starttime.add(DURATION);
}
function totalSupply() public view returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view returns (uint256) {
return _balances[account];
}
function lastTimeRewardApplicable() public view returns (uint256) {
return Math.min(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
balanceOf(account)
.mul(rewardPerToken().sub(userRewardPerTokenPaid[account]))
.div(1e18)
.add(rewards[account]);
}
function stake(uint256 amount) public updateReward(msg.sender) checkStart returns(bool) {
require(amount > 0, "Cannot stake 0");
_totalSupply = _totalSupply.add(amount);
_balances[msg.sender] = _balances[msg.sender].add(amount);
basetoken.safeTransferFrom(msg.sender, address(this), amount);
emit Staked(msg.sender, amount);
return true;
}
function withdraw(uint256 amount) public updateReward(msg.sender) checkStart returns(bool) {
require(amount > 0, "Cannot withdraw 0");
_totalSupply = _totalSupply.sub(amount);
_balances[msg.sender] = _balances[msg.sender].sub(amount);
basetoken.safeTransfer(msg.sender, amount);
emit Withdrawn(msg.sender, amount);
}
function exit() external returns(bool) {
withdraw(balanceOf(msg.sender));
getReward();
return true;
}
function getReward() public updateReward(msg.sender) checkStart returns(bool) {
uint256 reward = earned(msg.sender);
if (reward > 0) {
rewards[msg.sender] = 0;
rewardtoken.safeTransfer(msg.sender, reward);
emit RewardPaid(msg.sender, reward);
}
return true;
}
function _becomeImplementation(bytes memory data) public {
// Shh -- currently unused
data;
// Shh -- we don't ever want this hook to be marked pure
if (false) {
implementation = address(0);
}
require(msg.sender == gov, "only the gov may call _becomeImplementation");
}
function _resignImplementation() public {
// Shh -- we don't ever want this hook to be marked pure
if (false) {
implementation = address(0);
}
require(msg.sender == gov, "only the gov may call _resignImplementation");
}
}
contract USDTPoolDelegator is PoolStorage {
uint256 private _totalSupply;
mapping(address => uint256) private _balances;
event NewImplementation(address oldImplementation, address newImplementation);
constructor(
string memory _poolname,
address _rewardtoken,
address _basetoken,
uint256 _starttime,
uint256 _period,
uint256 _initreward,
address implementation_,
bytes memory becomeImplementationData
)
public
{
gov = msg.sender;
delegateTo(
implementation_,
abi.encodeWithSignature(
"initialize(string,address,address,uint256,uint256,uint256)",
_poolname,
_rewardtoken,
_basetoken,
_starttime,
_period,
_initreward
)
);
// New implementations always get set via the settor (post-initialize)
_setImplementation(implementation_, false, becomeImplementationData);
}
/**
* @notice Called by the gov to update the implementation of the delegator
* @param implementation_ The address of the new implementation for delegation
* @param allowResign Flag to indicate whether to call _resignImplementation on the old implementation
* @param becomeImplementationData The encoded bytes data to be passed to _becomeImplementation
*/
function _setImplementation(address implementation_, bool allowResign, bytes memory becomeImplementationData) public {
require(msg.sender == gov, "RewardPoolDelegator::_setImplementation: Caller must be gov");
if (allowResign) {
delegateToImplementation(abi.encodeWithSignature("_resignImplementation()"));
}
address oldImplementation = implementation;
implementation = implementation_;
delegateToImplementation(abi.encodeWithSignature("_becomeImplementation(bytes)", becomeImplementationData));
emit NewImplementation(oldImplementation, implementation);
}
function totalSupply()
external
view
returns (uint256)
{
delegateToViewAndReturn();
}
function balanceOf(address account)
external
view
returns (uint256)
{
account;
delegateToViewAndReturn();
}
function earned(address account)
external
view
returns (uint256)
{
account;
delegateToViewAndReturn();
}
function stake(uint256 amount)
external
returns (bool)
{
amount;
delegateAndReturn();
}
function withdraw(uint256 amount)
external
returns (bool)
{
amount;
delegateAndReturn();
}
function exit()
external
returns (bool)
{
delegateAndReturn();
}
function getReward()
external
returns (bool)
{
delegateAndReturn();
}
function _setPendingGov(address newPendingGov)
external
{
newPendingGov;
delegateAndReturn();
}
function _acceptGov()
external
{
delegateAndReturn();
}
/**
* @notice Internal method to delegate execution to another contract
* @dev It returns to the external caller whatever the implementation returns or forwards reverts
* @param callee The contract to delegatecall
* @param data The raw data to delegatecall
* @return The returned bytes from the delegatecall
*/
function delegateTo(address callee, bytes memory data) internal returns (bytes memory) {
(bool success, bytes memory returnData) = callee.delegatecall(data);
assembly {
if eq(success, 0) {
revert(add(returnData, 0x20), returndatasize)
}
}
return returnData;
}
/**
* @notice Delegates execution to the implementation contract
* @dev It returns to the external caller whatever the implementation returns or forwards reverts
* @param data The raw data to delegatecall
* @return The returned bytes from the delegatecall
*/
function delegateToImplementation(bytes memory data) public returns (bytes memory) {
return delegateTo(implementation, data);
}
/**
* @notice Delegates execution to an implementation contract
* @dev It returns to the external caller whatever the implementation returns or forwards reverts
* There are an additional 2 prefix uints from the wrapper returndata, which we ignore since we make an extra hop.
* @param data The raw data to delegatecall
* @return The returned bytes from the delegatecall
*/
function delegateToViewImplementation(bytes memory data) public view returns (bytes memory) {
(bool success, bytes memory returnData) = address(this).staticcall(abi.encodeWithSignature("delegateToImplementation(bytes)", data));
assembly {
if eq(success, 0) {
revert(add(returnData, 0x20), returndatasize)
}
}
return abi.decode(returnData, (bytes));
}
function delegateToViewAndReturn() private view returns (bytes memory) {
(bool success, ) = address(this).staticcall(abi.encodeWithSignature("delegateToImplementation(bytes)", msg.data));
assembly {
let free_mem_ptr := mload(0x40)
returndatacopy(free_mem_ptr, 0, returndatasize)
switch success
case 0 { revert(free_mem_ptr, returndatasize) }
default { return(add(free_mem_ptr, 0x40), returndatasize) }
}
}
function delegateAndReturn() private returns (bytes memory) {
(bool success, ) = implementation.delegatecall(msg.data);
assembly {
let free_mem_ptr := mload(0x40)
returndatacopy(free_mem_ptr, 0, returndatasize)
switch success
case 0 { revert(free_mem_ptr, returndatasize) }
default { return(free_mem_ptr, returndatasize) }
}
}
/**
* @notice Delegates execution to an implementation contract
* @dev It returns to the external caller whatever the implementation returns or forwards reverts
*/
function () external payable {
require(msg.value == 0,"RewardPoolDelegator:fallback: cannot send value to fallback");
// delegate all other functions to current implementation
delegateAndReturn();
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"string","name":"_poolname","type":"string"},{"internalType":"address","name":"_rewardtoken","type":"address"},{"internalType":"address","name":"_basetoken","type":"address"},{"internalType":"uint256","name":"_starttime","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"},{"internalType":"uint256","name":"_initreward","type":"uint256"},{"internalType":"address","name":"implementation_","type":"address"},{"internalType":"bytes","name":"becomeImplementationData","type":"bytes"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldImplementation","type":"address"},{"indexed":false,"internalType":"address","name":"newImplementation","type":"address"}],"name":"NewImplementation","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":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"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[],"name":"DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"_acceptGov","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"implementation_","type":"address"},{"internalType":"bool","name":"allowResign","type":"bool"},{"internalType":"bytes","name":"becomeImplementationData","type":"bytes"}],"name":"_setImplementation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newPendingGov","type":"address"}],"name":"_setPendingGov","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"basetoken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"delegateToImplementation","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"delegateToViewImplementation","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"earned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"exit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"getReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"gov","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"initreward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastUpdateTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingGov","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"periodFinish","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardPerTokenStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardtoken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"starttime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userRewardPerTokenPaid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60806040523480156200001157600080fd5b50604051620017663803806200176683398181016040526101008110156200003857600080fd5b81019080805160405193929190846401000000008211156200005957600080fd5b9083019060208201858111156200006f57600080fd5b82516401000000008111828201881017156200008a57600080fd5b82525081516020918201929091019080838360005b83811015620000b95781810151838201526020016200009f565b50505050905090810190601f168015620000e75780820380516001836020036101000a031916815260200191505b5060408181526020830151908301516060840151608085015160a086015160c087015160e0909701805195999498939792969195929491939192846401000000008211156200013557600080fd5b9083019060208201858111156200014b57600080fd5b82516401000000008111828201881017156200016657600080fd5b82525081516020918201929091019080838360005b83811015620001955781810151838201526020016200017b565b50505050905090810190601f168015620001c35780820380516001836020036101000a031916815260200191505b506040819052600080546001600160a01b031916331781556001600160a01b038c811660448401528b166064830152608482018a905260a4820189905260c4820188905260c0602483019081528d5160e48401528d51620002cc96508895508e94508d938d938d938d938d9391928392610104019160208b01918190849084905b838110156200025e57818101518382015260200162000244565b50505050905090810190601f1680156200028c5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529190526020810180516001600160e01b039081166359ec35ff60e11b17909152909850620002f2169650505050505050565b50620002e4826000836001600160e01b03620003b916565b505050505050505062000595565b606060006060846001600160a01b0316846040518082805190602001908083835b60208310620003345780518252601f19909201916020918201910162000313565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811462000396576040519150601f19603f3d011682016040523d82523d6000602084013e6200039b565b606091505b50915091506000821415620003b1573d60208201fd5b949350505050565b6000546001600160a01b03163314620004045760405162461bcd60e51b815260040180806020018281038252603b8152602001806200172b603b913960400191505060405180910390fd5b811562000446576040805160048152602481019091526020810180516001600160e01b0390811663153ab50560e01b179091526200044491906200056b16565b505b600c80546001600160a01b038581166001600160a01b031983161790925560405160206024820181815285516044840152855194909316936200051c938693909283926064909201919085019080838360005b83811015620004b357818101518382015260200162000499565b50505050905090810190601f168015620004e15780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529190526020810180516001600160e01b03908116630adccee560e31b179091529093506200056b16915050565b50600c54604080516001600160a01b038085168252909216602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a150505050565b600c546060906200058f906001600160a01b0316836001600160e01b03620002f216565b92915050565b61118680620005a56000396000f3fe6080604052600436106101a05760003560e01c80635c60da1b116100e15780638da588971161008a578063c8f33c9111610064578063c8f33c911461072b578063df136d6514610740578063e9fad8ee1461048c578063ebe2b12b14610755576101a0565b80638da58897146107015780639c907b5814610716578063a694fc3a1461044e576101a0565b806373f03dff116100bb57806373f03dff1461066c5780637b0a47ee146106ac5780638b876347146106c1576101a0565b80635c60da1b146106425780636dff132e1461065757806370a0823114610202576101a0565b80631be052891161014e5780633d18b912116101285780633d18b9121461048c5780634487152f146104a15780634bda2e2014610554578063555bcc401461056b576101a0565b80631be052891461042457806325240810146104395780632e1a7d4d1461044e576101a0565b80630933c1ed1161017f5780630933c1ed146102d257806312d43a51146103fa57806318160ddd1461040f576101a0565b80628cc2621461020257806302546ffc146102545780630700037d14610292575b34156101f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180611117603b913960400191505060405180910390fd5b6101ff61076a565b50005b34801561020e57600080fd5b506102426004803603602081101561022557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107ff565b60408051918252519081900360200190f35b34801561026057600080fd5b5061026961080f565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561029e57600080fd5b50610242600480360360208110156102b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661082b565b3480156102de57600080fd5b50610385600480360360208110156102f557600080fd5b81019060208101813564010000000081111561031057600080fd5b82018360208201111561032257600080fd5b8035906020019184600183028401116401000000008311171561034457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061083d945050505050565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103bf5781810151838201526020016103a7565b50505050905090810190601f1680156103ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040657600080fd5b50610269610869565b34801561041b57600080fd5b50610242610885565b34801561043057600080fd5b50610242610893565b34801561044557600080fd5b50610269610899565b34801561045a57600080fd5b506104786004803603602081101561047157600080fd5b50356108b5565b604080519115158252519081900360200190f35b34801561049857600080fd5b506104786108bf565b3480156104ad57600080fd5b50610385600480360360208110156104c457600080fd5b8101906020810181356401000000008111156104df57600080fd5b8201836020820111156104f157600080fd5b8035906020019184600183028401116401000000008311171561051357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506108c9945050505050565b34801561056057600080fd5b50610569610b61565b005b34801561057757600080fd5b506105696004803603606081101561058e57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101351515918101906060810160408201356401000000008111156105cd57600080fd5b8201836020820111156105df57600080fd5b8035906020019184600183028401116401000000008311171561060157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610b6c945050505050565b34801561064e57600080fd5b50610269610ddd565b34801561066357600080fd5b50610269610df9565b34801561067857600080fd5b506105696004803603602081101561068f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610e15565b3480156106b857600080fd5b50610242610e21565b3480156106cd57600080fd5b50610242600480360360208110156106e457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610e27565b34801561070d57600080fd5b50610242610e39565b34801561072257600080fd5b50610242610e3f565b34801561073757600080fd5b50610242610e45565b34801561074c57600080fd5b50610242610e4b565b34801561076157600080fd5b50610242610e51565b600c5460405160609160009173ffffffffffffffffffffffffffffffffffffffff90911690829036908083838082843760405192019450600093509091505080830381855af49150503d80600081146107df576040519150601f19603f3d011682016040523d82523d6000602084013e6107e4565b606091505b505090506040513d6000823e8180156107fb573d82f35b3d82fd5b6000610809610e57565b50919050565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b600e6020526000908152604090205481565b600c546060906108639073ffffffffffffffffffffffffffffffffffffffff1683610fee565b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600061088f610e57565b5090565b60055481565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b600061080961076a565b600061088f61076a565b6060600060603073ffffffffffffffffffffffffffffffffffffffff16846040516024018080602001828103825283818151815260200191508051906020019080838360005b8381101561092757818101518382015260200161090f565b50505050905090810190601f1680156109545780820380516001836020036101000a031916815260200191505b50604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0933c1ed00000000000000000000000000000000000000000000000000000000178152905182519295509350839250908083835b60208310610a1957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016109dc565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114610a79576040519150601f19603f3d011682016040523d82523d6000602084013e610a7e565b606091505b50915091506000821415610a93573d60208201fd5b808060200190516020811015610aa857600080fd5b8101908080516040519392919084640100000000821115610ac857600080fd5b908301906020820185811115610add57600080fd5b8251640100000000811182820188101715610af757600080fd5b82525081516020918201929091019080838360005b83811015610b24578181015183820152602001610b0c565b50505050905090810190601f168015610b515780820380516001836020036101000a031916815260200191505b5060405250505092505050919050565b610b6961076a565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bdc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b8152602001806110dc603b913960400191505060405180910390fd5b8115610c44576040805160048152602481019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f153ab50500000000000000000000000000000000000000000000000000000000179052610c429061083d565b505b600c805473ffffffffffffffffffffffffffffffffffffffff8581167fffffffffffffffffffffffff00000000000000000000000000000000000000008316179092556040516020602482018181528551604484015285519490931693610d81938693909283926064909201919085019080838360005b83811015610cd3578181015183820152602001610cbb565b50505050905090810190601f168015610d005780820380516001836020036101000a031916815260200191505b50604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f56e6772800000000000000000000000000000000000000000000000000000000179052925061083d915050565b50600c546040805173ffffffffffffffffffffffffffffffffffffffff8085168252909216602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a150505050565b600c5473ffffffffffffffffffffffffffffffffffffffff1681565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b610e1d61076a565b5050565b60095481565b600d6020526000908152604090205481565b60075481565b60065481565b600a5481565b600b5481565b60085481565b606060003073ffffffffffffffffffffffffffffffffffffffff166000366040516024018080602001828103825284848281815260200192508082843760008382015260408051601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090811690940182810390940182529283526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0933c1ed0000000000000000000000000000000000000000000000000000000017815292518151919750955085945091925081905083835b60208310610f6f57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610f32565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114610fcf576040519150601f19603f3d011682016040523d82523d6000602084013e610fd4565b606091505b505090506040513d6000823e8180156107fb573d60408301f35b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040518082805190602001908083835b6020831061105957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161101c565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146110b9576040519150601f19603f3d011682016040523d82523d6000602084013e6110be565b606091505b509150915060008214156110d3573d60208201fd5b94935050505056fe526577617264506f6f6c44656c656761746f723a3a5f736574496d706c656d656e746174696f6e3a2043616c6c6572206d75737420626520676f76526577617264506f6f6c44656c656761746f723a66616c6c6261636b3a2063616e6e6f742073656e642076616c756520746f2066616c6c6261636ba265627a7a72315820ad2c14ee486f96562b143af55dfc3ba49d95786611e49cc62b9bd0f2062bbaad64736f6c63430005110032526577617264506f6f6c44656c656761746f723a3a5f736574496d706c656d656e746174696f6e3a2043616c6c6572206d75737420626520676f7600000000000000000000000000000000000000000000000000000000000001000000000000000000000000001dafac57c2f74cbc2736486309a009880ce4cbfc000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000000000000000000000000000000000005feac5e000000000000000000000000000000000000000000000000000000000001275000000000000000000000000000000000000000000000000d8d726b7177a800000000000000000000000000000b7b6dd65c6835a6e8e987d64a8ea0d79a720d5590000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000c5553445453656564506f6f6c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106101a05760003560e01c80635c60da1b116100e15780638da588971161008a578063c8f33c9111610064578063c8f33c911461072b578063df136d6514610740578063e9fad8ee1461048c578063ebe2b12b14610755576101a0565b80638da58897146107015780639c907b5814610716578063a694fc3a1461044e576101a0565b806373f03dff116100bb57806373f03dff1461066c5780637b0a47ee146106ac5780638b876347146106c1576101a0565b80635c60da1b146106425780636dff132e1461065757806370a0823114610202576101a0565b80631be052891161014e5780633d18b912116101285780633d18b9121461048c5780634487152f146104a15780634bda2e2014610554578063555bcc401461056b576101a0565b80631be052891461042457806325240810146104395780632e1a7d4d1461044e576101a0565b80630933c1ed1161017f5780630933c1ed146102d257806312d43a51146103fa57806318160ddd1461040f576101a0565b80628cc2621461020257806302546ffc146102545780630700037d14610292575b34156101f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180611117603b913960400191505060405180910390fd5b6101ff61076a565b50005b34801561020e57600080fd5b506102426004803603602081101561022557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107ff565b60408051918252519081900360200190f35b34801561026057600080fd5b5061026961080f565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561029e57600080fd5b50610242600480360360208110156102b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661082b565b3480156102de57600080fd5b50610385600480360360208110156102f557600080fd5b81019060208101813564010000000081111561031057600080fd5b82018360208201111561032257600080fd5b8035906020019184600183028401116401000000008311171561034457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061083d945050505050565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103bf5781810151838201526020016103a7565b50505050905090810190601f1680156103ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040657600080fd5b50610269610869565b34801561041b57600080fd5b50610242610885565b34801561043057600080fd5b50610242610893565b34801561044557600080fd5b50610269610899565b34801561045a57600080fd5b506104786004803603602081101561047157600080fd5b50356108b5565b604080519115158252519081900360200190f35b34801561049857600080fd5b506104786108bf565b3480156104ad57600080fd5b50610385600480360360208110156104c457600080fd5b8101906020810181356401000000008111156104df57600080fd5b8201836020820111156104f157600080fd5b8035906020019184600183028401116401000000008311171561051357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506108c9945050505050565b34801561056057600080fd5b50610569610b61565b005b34801561057757600080fd5b506105696004803603606081101561058e57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101351515918101906060810160408201356401000000008111156105cd57600080fd5b8201836020820111156105df57600080fd5b8035906020019184600183028401116401000000008311171561060157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610b6c945050505050565b34801561064e57600080fd5b50610269610ddd565b34801561066357600080fd5b50610269610df9565b34801561067857600080fd5b506105696004803603602081101561068f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610e15565b3480156106b857600080fd5b50610242610e21565b3480156106cd57600080fd5b50610242600480360360208110156106e457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610e27565b34801561070d57600080fd5b50610242610e39565b34801561072257600080fd5b50610242610e3f565b34801561073757600080fd5b50610242610e45565b34801561074c57600080fd5b50610242610e4b565b34801561076157600080fd5b50610242610e51565b600c5460405160609160009173ffffffffffffffffffffffffffffffffffffffff90911690829036908083838082843760405192019450600093509091505080830381855af49150503d80600081146107df576040519150601f19603f3d011682016040523d82523d6000602084013e6107e4565b606091505b505090506040513d6000823e8180156107fb573d82f35b3d82fd5b6000610809610e57565b50919050565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b600e6020526000908152604090205481565b600c546060906108639073ffffffffffffffffffffffffffffffffffffffff1683610fee565b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600061088f610e57565b5090565b60055481565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b600061080961076a565b600061088f61076a565b6060600060603073ffffffffffffffffffffffffffffffffffffffff16846040516024018080602001828103825283818151815260200191508051906020019080838360005b8381101561092757818101518382015260200161090f565b50505050905090810190601f1680156109545780820380516001836020036101000a031916815260200191505b50604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0933c1ed00000000000000000000000000000000000000000000000000000000178152905182519295509350839250908083835b60208310610a1957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016109dc565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114610a79576040519150601f19603f3d011682016040523d82523d6000602084013e610a7e565b606091505b50915091506000821415610a93573d60208201fd5b808060200190516020811015610aa857600080fd5b8101908080516040519392919084640100000000821115610ac857600080fd5b908301906020820185811115610add57600080fd5b8251640100000000811182820188101715610af757600080fd5b82525081516020918201929091019080838360005b83811015610b24578181015183820152602001610b0c565b50505050905090810190601f168015610b515780820380516001836020036101000a031916815260200191505b5060405250505092505050919050565b610b6961076a565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bdc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b8152602001806110dc603b913960400191505060405180910390fd5b8115610c44576040805160048152602481019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f153ab50500000000000000000000000000000000000000000000000000000000179052610c429061083d565b505b600c805473ffffffffffffffffffffffffffffffffffffffff8581167fffffffffffffffffffffffff00000000000000000000000000000000000000008316179092556040516020602482018181528551604484015285519490931693610d81938693909283926064909201919085019080838360005b83811015610cd3578181015183820152602001610cbb565b50505050905090810190601f168015610d005780820380516001836020036101000a031916815260200191505b50604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f56e6772800000000000000000000000000000000000000000000000000000000179052925061083d915050565b50600c546040805173ffffffffffffffffffffffffffffffffffffffff8085168252909216602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a150505050565b600c5473ffffffffffffffffffffffffffffffffffffffff1681565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b610e1d61076a565b5050565b60095481565b600d6020526000908152604090205481565b60075481565b60065481565b600a5481565b600b5481565b60085481565b606060003073ffffffffffffffffffffffffffffffffffffffff166000366040516024018080602001828103825284848281815260200192508082843760008382015260408051601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090811690940182810390940182529283526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0933c1ed0000000000000000000000000000000000000000000000000000000017815292518151919750955085945091925081905083835b60208310610f6f57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610f32565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114610fcf576040519150601f19603f3d011682016040523d82523d6000602084013e610fd4565b606091505b505090506040513d6000823e8180156107fb573d60408301f35b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040518082805190602001908083835b6020831061105957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161101c565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146110b9576040519150601f19603f3d011682016040523d82523d6000602084013e6110be565b606091505b509150915060008214156110d3573d60208201fd5b94935050505056fe526577617264506f6f6c44656c656761746f723a3a5f736574496d706c656d656e746174696f6e3a2043616c6c6572206d75737420626520676f76526577617264506f6f6c44656c656761746f723a66616c6c6261636b3a2063616e6e6f742073656e642076616c756520746f2066616c6c6261636ba265627a7a72315820ad2c14ee486f96562b143af55dfc3ba49d95786611e49cc62b9bd0f2062bbaad64736f6c63430005110032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000001000000000000000000000000001dafac57c2f74cbc2736486309a009880ce4cbfc000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000000000000000000000000000000000005feac5e000000000000000000000000000000000000000000000000000000000001275000000000000000000000000000000000000000000000000d8d726b7177a800000000000000000000000000000b7b6dd65c6835a6e8e987d64a8ea0d79a720d5590000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000c5553445453656564506f6f6c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _poolname (string): USDTSeedPool
Arg [1] : _rewardtoken (address): 0x1dAfac57c2F74CBC2736486309a009880CE4cbfc
Arg [2] : _basetoken (address): 0xdAC17F958D2ee523a2206206994597C13D831ec7
Arg [3] : _starttime (uint256): 1609221600
Arg [4] : _period (uint256): 1209600
Arg [5] : _initreward (uint256): 4000000000000000000000
Arg [6] : implementation_ (address): 0xB7B6dD65c6835a6e8E987D64A8eA0d79A720d559
Arg [7] : becomeImplementationData (bytes): 0x
-----Encoded View---------------
11 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [1] : 0000000000000000000000001dafac57c2f74cbc2736486309a009880ce4cbfc
Arg [2] : 000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7
Arg [3] : 000000000000000000000000000000000000000000000000000000005feac5e0
Arg [4] : 0000000000000000000000000000000000000000000000000000000000127500
Arg [5] : 0000000000000000000000000000000000000000000000d8d726b7177a800000
Arg [6] : 000000000000000000000000b7b6dd65c6835a6e8e987d64a8ea0d79a720d559
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [8] : 000000000000000000000000000000000000000000000000000000000000000c
Arg [9] : 5553445453656564506f6f6c0000000000000000000000000000000000000000
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
26735:6736:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33284:9;:14;33276:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33441:19;:17;:19::i;:::-;;26735:6736;29192:159;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29192:159:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29192:159:0;;;;:::i;:::-;;;;;;;;;;;;;;;;21463:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21463:23:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21862:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21862:42:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21862:42:0;;;;:::i;31095:141::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31095:141:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;31095:141:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;31095:141:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;31095:141:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;31095:141:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;31095:141:0;;-1:-1:-1;31095:141:0;;-1:-1:-1;;;;;31095:141:0:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;31095:141:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21384:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21384:18:0;;;:::i;28883:131::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28883:131:0;;;:::i;21525:23::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21525:23:0;;;:::i;21409:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21409:25:0;;;:::i;29500:136::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29500:136:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29500:136:0;;:::i;:::-;;;;;;;;;;;;;;;;;;29753:106;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29753:106:0;;;:::i;31658:434::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31658:434:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;31658:434:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;31658:434:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;31658:434:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;31658:434:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;31658:434:0;;-1:-1:-1;31658:434:0;;-1:-1:-1;;;;;31658:434:0:i;30007:83::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30007:83:0;;;:::i;:::-;;28230:645;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28230:645:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;28230:645:0;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;28230:645:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;28230:645:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;28230:645:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;28230:645:0;;-1:-1:-1;28230:645:0;;-1:-1:-1;;;;;28230:645:0:i;21762:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21762:29:0;;;:::i;21493:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21493:25:0;;;:::i;29867:132::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29867:132:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29867:132:0;;;;:::i;21652:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21652:25:0;;;:::i;21798:57::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21798:57:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21798:57:0;;;;:::i;21587:24::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21587:24:0;;;:::i;21555:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21555:25:0;;;:::i;21684:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21684:29:0;;;:::i;21720:35::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21720:35:0;;;:::i;21618:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21618:27:0;;;:::i;32614:427::-;32704:14;;:37;;32660:12;;32686;;32704:14;;;;;32686:12;;32732:8;;32704:37;32686:12;32732:8;;32686:12;32704:37;1:33:-1;32704:37:0;;45:16:-1;;;-1:-1;32704:37:0;;-1:-1:-1;32704:37:0;;-1:-1:-1;;32704:37:0;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;32685:56:0;;;32804:4;32798:11;32855:14;32852:1;32838:12;32823:47;32893:7;32914:47;;;;33006:14;32992:12;32985:36;32914:47;32944:14;32930:12;32923:36;29192:159;29275:7;29318:25;:23;:25::i;:::-;;29192:159;;;:::o;21463:23::-;;;;;;:::o;21862:42::-;;;;;;;;;;;;;:::o;31095:141::-;31207:14;;31164:12;;31196:32;;31207:14;;31223:4;31196:10;:32::i;:::-;31189:39;31095:141;-1:-1:-1;;31095:141:0:o;21384:18::-;;;;;;:::o;28883:131::-;28956:7;28981:25;:23;:25::i;:::-;;28883:131;:::o;21525:23::-;;;;:::o;21409:25::-;;;;;;:::o;29500:136::-;29570:4;29609:19;:17;:19::i;29753:106::-;29810:4;29832:19;:17;:19::i;31658:434::-;31736:12;31762;31776:23;31811:4;31803:24;;31887:4;31828:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;31828:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31828:64:0;;;22:32:-1;26:21;;;22:32;6:49;;31828:64:0;;;49:4:-1;25:18;;61:17;;31828:64:0;182:15:-1;31828:64:0;179:29:-1;160:49;;31803:90:0;;;;31828:64;;-1:-1:-1;31803:90:0;-1:-1:-1;31803:90:0;;-1:-1:-1;25:18;31803:90:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;31803:90:0;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;31761:132:0;;;;31943:1;31934:7;31931:14;31928:2;;;31995:14;31988:4;31976:10;31972:21;31965:45;31928:2;32064:10;32053:31;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32053:31:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;32053:31:0;;420:4:-1;411:14;;;;32053:31:0;;;;;411:14:-1;32053:31:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;32053:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32046:38;;;;31658:434;;;:::o;30007:83::-;30063:19;:17;:19::i;:::-;;30007:83::o;28230:645::-;28380:3;;;;28366:10;:17;28358:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28464:11;28460:120;;;28517:50;;;22:32:-1;6:49;;28517:50:0;;;;;;49:4:-1;25:18;;61:17;;28517:50:0;182:15:-1;28517:50:0;179:29:-1;160:49;;28492:76:0;;:24;:76::i;:::-;;28460:120;28620:14;;;;28645:32;;;;;;;;;;28715:81;;;;;;;;;;;;;;;;;28620:14;;;;;28690:107;;28771:24;;28715:81;;;;;;;;;;;;;;;;28592:25;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;28715:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28715:81:0;;;22:32:-1;26:21;;;22:32;6:49;;28715:81:0;;;49:4:-1;25:18;;61:17;;28715:81:0;182:15:-1;28715:81:0;179:29:-1;160:49;;28715:81:0;-1:-1:-1;28690:24:0;;-1:-1:-1;;28690:107:0:i;:::-;-1:-1:-1;28852:14:0;;28815:52;;;28852:14;28815:52;;;;;28852:14;;;28815:52;;;;;;;;;;;;;;;;28230:645;;;;:::o;21762:29::-;;;;;;:::o;21493:25::-;;;;;;:::o;29867:132::-;29972:19;:17;:19::i;:::-;;29867:132;:::o;21652:25::-;;;;:::o;21798:57::-;;;;;;;;;;;;;:::o;21587:24::-;;;;:::o;21555:25::-;;;;:::o;21684:29::-;;;;:::o;21720:35::-;;;;:::o;21618:27::-;;;;:::o;32100:506::-;32157:12;32183;32209:4;32201:24;;32285:8;;32226:68;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;32226:68:0;;;137:4:-1;117:14;;;133:9;113:30;;;157:16;;;26:21;;;22:32;;;6:49;;32226:68:0;;;49:4:-1;25:18;;61:17;;32226:68:0;182:15:-1;32226:68:0;179:29:-1;160:49;;32201:94:0;;;;32226:68;;-1:-1:-1;32201:94:0;-1:-1:-1;32201:94:0;;-1:-1:-1;25:18;;-1:-1;32201:94:0;;-1:-1:-1;32201:94:0;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;32201:94:0;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;32182:113:0;;;32358:4;32352:11;32409:14;32406:1;32392:12;32377:47;32447:7;32468:47;;;;32571:14;32564:4;32550:12;32546:23;32539:47;30450:343;30523:12;30549;30563:23;30590:6;:19;;30610:4;30590:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;30590:25:0;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;30548:67:0;;;;30665:1;30656:7;30653:14;30650:2;;;30717:14;30710:4;30698:10;30694:21;30687:45;30650:2;30775:10;30450:343;-1:-1:-1;;;;30450:343:0:o
Swarm Source
bzzr://ad2c14ee486f96562b143af55dfc3ba49d95786611e49cc62b9bd0f2062bbaad
Loading...
Loading
Loading...
Loading
Net Worth in USD
$2,519.44
Net Worth in ETH
1.206471
Token Allocations
USDT
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $0.999999 | 2,519.4474 | $2,519.44 |
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.