Contract Overview
Balance:
0 AVAX
AVAX Value:
$0.00
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Contract Name:
PoolHelper2LP
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "SafeERC20.sol"; import "IBaseRewardPool.sol"; import "IMainStaking.sol"; import "IMasterChefVTX.sol"; import "IMasterPlatypus.sol"; /// @title Poolhelper /// @author Vector Team /// @notice This contract is the main contract that user will intreact with in order to stake stable in Vector protocol contract PoolHelper2LP { using SafeERC20 for IERC20; address public immutable depositToken; address public immutable stakingToken; address public immutable xptp; address public immutable masterVtx; address public immutable assetToken; address public immutable mainStaking; address public immutable rewarder; uint256 public immutable pid; event NewDeposit(address indexed user, uint256 amount); event NewWithdraw(address indexed user, uint256 amount); constructor( uint256 _pid, address _stakingToken, address _depositToken, address _assetToken, address _mainStaking, address _masterVtx, address _rewarder, address _xptp ) { pid = _pid; stakingToken = _stakingToken; depositToken = _depositToken; mainStaking = _mainStaking; masterVtx = _masterVtx; rewarder = _rewarder; xptp = _xptp; assetToken = _assetToken; } function totalSupply() public view returns (uint256) { return IBaseRewardPool(rewarder).totalSupply(); } /// @notice get the amount of reward per token deposited by a user /// @param token the token to get the number of rewards /// @return the amount of claimable tokens function rewardPerToken(address token) public view returns (uint256) { return IBaseRewardPool(rewarder).rewardPerToken(token); } /// @notice get the total amount of shares of a user /// @param _address the user /// @return the amount of shares function balance(address _address) public view returns (uint256) { return IBaseRewardPool(rewarder).balanceOf(_address); } /// @notice get the total amount of stables deposited by a user /// @return the amount of stables deposited function depositTokenBalance(address _user) public view returns (uint256) { return IMainStaking(mainStaking).getDepositTokensForShares(balance(_user), assetToken); } modifier _harvest() { IMainStaking(mainStaking).multiHarvest(assetToken, false); _; } /// @notice harvest pending PTP and get the caller fee function harvest() public { IMainStaking(mainStaking).multiHarvest(assetToken, true); IERC20(xptp).safeTransfer(msg.sender, IERC20(xptp).balanceOf(address(this))); } /// @notice update the rewards for the caller function update() public { IBaseRewardPool(rewarder).updateFor(msg.sender); } /// @notice get the total amount of rewards for a given token for a user /// @param token the address of the token to get the number of rewards for /// @return vtxAmount the amount of VTX ready for harvest /// @return tokenAmount the amount of token inputted function earned(address token) public view returns (uint256 vtxAmount, uint256 tokenAmount) { (vtxAmount, , , tokenAmount) = IMasterChefVTX(masterVtx).pendingTokens( stakingToken, msg.sender, token ); } /// @notice stake the receipt token in the masterchief of VTX on behalf of the caller function _stake(uint256 _amount, address sender) internal { IERC20(stakingToken).approve(masterVtx, _amount); IMasterChefVTX(masterVtx).depositFor(stakingToken, _amount, sender); } /// @notice unstake from the masterchief of VTX on behalf of the caller function _unstake(uint256 _amount, address sender) internal { IMasterChefVTX(masterVtx).withdrawFor(stakingToken, _amount, sender); } /// @notice deposit stables in mainStaking, autostake in masterchief of VTX /// @dev performs a harvest of PTP just before depositing /// @param amount the amount of stables to deposit function deposit(uint256 amount) external _harvest { uint256 beforeDeposit = IERC20(stakingToken).balanceOf(address(this)); IMainStaking(mainStaking).depositWithDifferentAsset( depositToken, assetToken, amount, msg.sender ); uint256 afterDeposit = IERC20(stakingToken).balanceOf(address(this)); _stake(afterDeposit - beforeDeposit, msg.sender); emit NewDeposit(msg.sender, amount); } /// @notice stake the receipt token in the masterchief of VTX on behalf of the caller function stake(uint256 _amount) external { IERC20(stakingToken).safeTransferFrom(msg.sender, address(this), _amount); IERC20(stakingToken).approve(masterVtx, _amount); IMasterChefVTX(masterVtx).depositFor(stakingToken, _amount, msg.sender); } /// @notice withdraw stables from mainStaking, auto unstake from masterchief of VTX /// @dev performs a harvest of PTP before withdrawing /// @param amount the amount of stables to deposit function withdraw(uint256 amount, uint256 minAmount) external _harvest { _unstake(amount, msg.sender); IMainStaking(mainStaking).withdrawWithDifferentAsset( depositToken, assetToken, amount, minAmount, msg.sender ); emit NewWithdraw(msg.sender, amount); } /// @notice withdraw stables from mainStaking, auto unstake from masterchief of VTX /// @dev performs a harvest of PTP before withdrawing /// @param amount the amount of stables to deposit function withdrawLP(uint256 amount) external _harvest { _unstake(amount, msg.sender); IMainStaking(mainStaking).withdrawLP(assetToken, amount, msg.sender); emit NewWithdraw(msg.sender, amount); } /// @notice withdraw stables from mainStaking, in the form of an overcovered asset, auto unstake from masterchief of VTX /// @dev performs a harvest of PTP before withdrawing /// @param amount the amount of stables to deposit function withdrawOverCoveredToken( address overCoveredToken, uint256 amount, uint256 minAmount ) external _harvest { _unstake(amount, msg.sender); IMainStaking(mainStaking).withdrawWithDifferentAssetForOverCoveredToken( depositToken, overCoveredToken, assetToken, amount, minAmount, msg.sender ); emit NewWithdraw(msg.sender, amount); } /// @notice Harvest VTX and PTP rewards function getReward() external _harvest { IMasterChefVTX(masterVtx).depositFor(stakingToken, 0, msg.sender); } /// @notice returns the number of pending PTP of the contract for the given pool /// returns pendingTokens the number of pending PTP function pendingPTP() external view returns (uint256 pendingTokens) { (pendingTokens, , , ) = IMasterPlatypus(IMainStaking(mainStaking).masterPlatypus()) .pendingTokens(pid, mainStaking); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC20/utils/SafeERC20.sol) pragma solidity ^0.8.0; import "IERC20.sol"; import "Address.sol"; /** * @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 IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { 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)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ 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' 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) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _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. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Address.sol) pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is 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. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @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]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IBaseRewardPool { struct Reward { address rewardToken; uint256 rewardPerTokenStored; uint256 queuedRewards; uint256 historicalRewards; } function rewards(address token) external view returns (Reward memory rewardInfo); function rewardTokens() external view returns (address[] memory); function getStakingToken() external view returns (address); function getReward(address _account) external returns (bool); function rewardDecimals(address token) external view returns (uint256); function stakingDecimals() external view returns (uint256); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function rewardPerToken(address token) external view returns (uint256); function updateFor(address account) external; function earned(address account, address token) external view returns (uint256); function stakeFor(address _for, uint256 _amount) external returns (bool); function withdrawFor( address user, uint256 amount, bool claim ) external; function queueNewRewards(uint256 _rewards, address token) external returns (bool); function donateRewards(uint256 _amountReward, address _rewardToken) external returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IMainStaking { function setXPTP(address _xPTP) external; function addFee( uint256 max, uint256 min, uint256 value, address to, bool isPTP, bool isAddress ) external; function setFee(uint256 index, uint256 value) external; function setCallerFee(uint256 value) external; function deposit( address token, uint256 amount, address sender ) external; function harvest(address token, bool isUser) external; function withdrawLP( address token, uint256 amount, address sender ) external; function withdraw( address token, uint256 _amount, uint256 _slippage, address sender ) external; function withdrawForOverCoveredToken( address token, address overCoveredToken, uint256 _amount, uint256 minAmount, address sender ) external; function withdrawWithDifferentAssetForOverCoveredToken( address token, address overCoveredToken, address asset, uint256 _amount, uint256 minAmount, address sender ) external; function stakePTP(uint256 amount) external; function stakeAllPtp() external; function claimVePTP() external; function getStakedPtp() external view returns (uint256); function getVePtp() external view returns (uint256); function unstakePTP() external; function pendingPtpForPool(address _token) external view returns (uint256 pendingPtp); function masterPlatypus() external view returns (address); function getLPTokensForShares(uint256 amount, address token) external view returns (uint256); function getSharesForDepositTokens(uint256 amount, address token) external view returns (uint256); function getDepositTokensForShares(uint256 amount, address token) external view returns (uint256); function registerPool( uint256 _pid, address _token, address _lpAddress, address _staking, string memory receiptName, string memory receiptSymbol, uint256 allocpoints ) external; function getPoolInfo(address _address) external view returns ( uint256 pid, bool isActive, address token, address lp, uint256 sizeLp, address receipt, uint256 size, address rewards_addr, address helper ); function removePool(address token) external; function depositWithDifferentAsset( address token, address asset, uint256 amount, address sender ) external; function multiHarvest(address token, bool isUser) external; function withdrawWithDifferentAsset( address token, address asset, uint256 _amount, uint256 minAmount, address sender ) external; function registerPoolWithDifferentAsset( uint256 _pid, address _token, address _lpAddress, address _assetToken, string memory receiptName, string memory receiptSymbol, uint256 allocPoints ) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IMasterChefVTX { function poolLength() external view returns (uint256); function setPoolManagerStatus(address _address, bool _bool) external; function add( uint256 _allocPoint, address _lpToken, address _rewarder, address _helper ) external; function set( address _lp, uint256 _allocPoint, address _rewarder, address _locker, bool overwrite ) external; function createRewarder(address _lpToken, address mainRewardToken) external returns (address); // View function to see pending VTXs on frontend. function getPoolInfo(address token) external view returns ( uint256 emission, uint256 allocpoint, uint256 sizeOfPool, uint256 totalPoint ); function pendingTokens( address _lp, address _user, address token ) external view returns ( uint256 pendingVTX, address bonusTokenAddress, string memory bonusTokenSymbol, uint256 pendingBonusToken ); function rewarderBonusTokenInfo(address _lp) external view returns (address bonusTokenAddress, string memory bonusTokenSymbol); function massUpdatePools() external; function updatePool(address _lp) external; function deposit(address _lp, uint256 _amount) external; function depositFor( address _lp, uint256 _amount, address sender ) external; function lock( address _lp, uint256 _amount, uint256 _index, bool force ) external; function unlock( address _lp, uint256 _amount, uint256 _index ) external; function multiUnlock( address _lp, uint256[] calldata _amount, uint256[] calldata _index ) external; function withdraw(address _lp, uint256 _amount) external; function withdrawFor( address _lp, uint256 _amount, address _sender ) external; function multiclaim(address[] memory _lps, address user_address) external; function emergencyWithdraw(address _lp, address sender) external; function updateEmissionRate(uint256 _vtxPerSec) external; function depositInfo(address _lp, address _user) external view returns (uint256 depositAmount); function setPoolHelper(address _lp, address _helper) external; function authorizeLocker(address _locker) external; function lockFor( address _lp, uint256 _amount, uint256 _index, address _for, bool force ) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IMasterPlatypus { function deposit(uint256 _pid, uint256 _amount) external; function withdraw(uint256 _pid, uint256 _amount) external; function pendingTokens(uint256 _pid, address _user) external view returns ( uint256 pendingPtp, address bonusTokenAddress, string memory bonusTokenSymbol, uint256 pendingBonusToken ); function userInfo(uint256 _pid, address _address) external view returns ( uint256 amount, uint256 debt, uint256 factor ); function migrate(uint256[] calldata _pids) external; }
{ "evmVersion": "istanbul", "optimizer": { "enabled": true, "runs": 40 }, "libraries": { "PoolHelper2LP.sol": {} }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } } }
[{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_stakingToken","type":"address"},{"internalType":"address","name":"_depositToken","type":"address"},{"internalType":"address","name":"_assetToken","type":"address"},{"internalType":"address","name":"_mainStaking","type":"address"},{"internalType":"address","name":"_masterVtx","type":"address"},{"internalType":"address","name":"_rewarder","type":"address"},{"internalType":"address","name":"_xptp","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"NewDeposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"NewWithdraw","type":"event"},{"inputs":[],"name":"assetToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"balance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depositToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"depositTokenBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"earned","outputs":[{"internalType":"uint256","name":"vtxAmount","type":"uint256"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"harvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mainStaking","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"masterVtx","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingPTP","outputs":[{"internalType":"uint256","name":"pendingTokens","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"rewardPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"update","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"minAmount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"overCoveredToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"minAmount","type":"uint256"}],"name":"withdrawOverCoveredToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"xptp","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6101806040523480156200001257600080fd5b5060405162001f4a38038062001f4a8339810160408190526200003591620000a2565b610160979097526001600160601b0319606096871b811660a05294861b851660805291851b841661012052841b831660e052831b82166101405292821b811660c05291901b166101005262000141565b80516001600160a01b03811681146200009d57600080fd5b919050565b600080600080600080600080610100898b031215620000c057600080fd5b88519750620000d260208a0162000085565b9650620000e260408a0162000085565b9550620000f260608a0162000085565b94506200010260808a0162000085565b93506200011260a08a0162000085565b92506200012260c08a0162000085565b91506200013260e08a0162000085565b90509295985092959890939650565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205160601c6101405160601c61016051611c29620003216000396000818161033301526113080152600081816102de0152818161044901528181610b0a015281816110bd01526113dc01526000818161018c015281816104f40152818161063a01528181610749015281816107e30152818161095701528181610a6e01528181610b4301528181610dbf01528181610f5f01528181611109015281816111b401528181611269015261132901526000818161015801528181610521015281816106670152818161070d015281816108100152818161098401528181610a3201528181610b7b01528181610dec01528181610f270152818161113601526111e101526000818161024f015281816103ba0152818161059301528181610c8601528181610d1a015281816114280152818161158e01526116220152600081816101c90152818161087301526109170152600081816102280152818161037f015281816105c201528181610c1a01528181610c5901528181610d4701528181610e6201528181610fd60152818161145501528181611561015261164f0152600081816102b7015281816106e501528181610a020152610eff0152611c296000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063a2e62045116100a8578063a2e6204514610271578063a4e7f67614610279578063a694fc3a1461028c578063b6b55f251461029f578063c89039c5146102b2578063dcc3e06e146102d9578063e3d670d714610300578063e4456ecb14610313578063e785312c14610326578063f10684541461032e578063f12297771461035557600080fd5b80628cc262146101265780631083f761146101535780631208e15b1461018757806318160ddd146101ae578063383d78e0146101c45780633d18b912146101eb578063441a3e70146101f55780634641257d1461020857806358e67acf1461021057806372f702f314610223578063a296454f1461024a575b600080fd5b6101396101343660046118cc565b610368565b604080519283526020830191909152015b60405180910390f35b61017a7f000000000000000000000000000000000000000000000000000000000000000081565b60405161014a9190611a9f565b61017a7f000000000000000000000000000000000000000000000000000000000000000081565b6101b6610445565b60405190815260200161014a565b61017a7f000000000000000000000000000000000000000000000000000000000000000081565b6101f36104dd565b005b6101f3610203366004611a61565b610623565b6101f36107cc565b6101f361021e366004611906565b610940565b61017a7f000000000000000000000000000000000000000000000000000000000000000081565b61017a7f000000000000000000000000000000000000000000000000000000000000000081565b6101f3610af3565b6101b66102873660046118cc565b610b3f565b6101f361029a36600461195d565b610c0d565b6101f36102ad36600461195d565b610da8565b61017a7f000000000000000000000000000000000000000000000000000000000000000081565b61017a7f000000000000000000000000000000000000000000000000000000000000000081565b6101b661030e3660046118cc565b6110a3565b6101f361032136600461195d565b6110f2565b6101b6611265565b6101b67f000000000000000000000000000000000000000000000000000000000000000081565b6101b66103633660046118cc565b6113c2565b60405163ad05e62760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152336024830152828116604483015260009182917f0000000000000000000000000000000000000000000000000000000000000000169063ad05e6279060640160006040518083038186803b1580156103fc57600080fd5b505afa158015610410573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610438919081019061198f565b9296929550919350505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104a057600080fd5b505afa1580156104b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d89190611976565b905090565b6040516387f6492d60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906387f6492d9061054c907f000000000000000000000000000000000000000000000000000000000000000090600090600401611ab3565b600060405180830381600087803b15801561056657600080fd5b505af115801561057a573d6000803e3d6000fd5b505060405163322083db60e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063c8820f6c91506105ef907f0000000000000000000000000000000000000000000000000000000000000000906000903390600401611ace565b600060405180830381600087803b15801561060957600080fd5b505af115801561061d573d6000803e3d6000fd5b50505050565b6040516387f6492d60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906387f6492d90610692907f000000000000000000000000000000000000000000000000000000000000000090600090600401611ab3565b600060405180830381600087803b1580156106ac57600080fd5b505af11580156106c0573d6000803e3d6000fd5b505050506106ce8233611411565b604051631ab21c0760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f00000000000000000000000000000000000000000000000000000000000000008116602483015260448201849052606482018390523360848301527f00000000000000000000000000000000000000000000000000000000000000001690631ab21c079060a401600060405180830381600087803b15801561078d57600080fd5b505af11580156107a1573d6000803e3d6000fd5b5050604051848152339250600080516020611bd4833981519152915060200160405180910390a25050565b6040516387f6492d60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906387f6492d9061083b907f000000000000000000000000000000000000000000000000000000000000000090600190600401611ab3565b600060405180830381600087803b15801561085557600080fd5b505af1158015610869573d6000803e3d6000fd5b5050505061093e337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016108bd9190611a9f565b60206040518083038186803b1580156108d557600080fd5b505afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d9190611976565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691906114b7565b565b6040516387f6492d60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906387f6492d906109af907f000000000000000000000000000000000000000000000000000000000000000090600090600401611ab3565b600060405180830381600087803b1580156109c957600080fd5b505af11580156109dd573d6000803e3d6000fd5b505050506109eb8233611411565b6040516339f6a1b960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015284811660248301527f00000000000000000000000000000000000000000000000000000000000000008116604483015260648201849052608482018390523360a48301527f000000000000000000000000000000000000000000000000000000000000000016906373ed43729060c401600060405180830381600087803b158015610ab257600080fd5b505af1158015610ac6573d6000803e3d6000fd5b5050604051848152339250600080516020611bd483398151915291506020015b60405180910390a2505050565b6040516301c14b2d60e31b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630e0a5968906105ef903390600401611a9f565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f0806088610b79846110a3565b7f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b8152600401610bb7929190611b3d565b60206040518083038186803b158015610bcf57600080fd5b505afa158015610be3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c079190611976565b92915050565b610c426001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084611512565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b390610cb0907f0000000000000000000000000000000000000000000000000000000000000000908590600401611af1565b602060405180830381600087803b158015610cca57600080fd5b505af1158015610cde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d02919061193b565b5060405163322083db60e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c8820f6c90610d73907f00000000000000000000000000000000000000000000000000000000000000009085903390600401611ace565b600060405180830381600087803b158015610d8d57600080fd5b505af1158015610da1573d6000803e3d6000fd5b5050505050565b6040516387f6492d60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906387f6492d90610e17907f000000000000000000000000000000000000000000000000000000000000000090600090600401611ab3565b600060405180830381600087803b158015610e3157600080fd5b505af1158015610e45573d6000803e3d6000fd5b50506040516370a0823160e01b8152600092506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691506370a0823190610e98903090600401611a9f565b60206040518083038186803b158015610eb057600080fd5b505afa158015610ec4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee89190611976565b60405163cd21798360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000081166024830152604482018590523360648301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063cd21798390608401600060405180830381600087803b158015610fa557600080fd5b505af1158015610fb9573d6000803e3d6000fd5b50506040516370a0823160e01b8152600092506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691506370a082319061100c903090600401611a9f565b60206040518083038186803b15801561102457600080fd5b505afa158015611038573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105c9190611976565b905061107161106b8383611b54565b3361154a565b60405183815233907f2cb77763bc1e8490c1a904905c4d74b4269919aca114464f4bb4d911e60de36490602001610ae6565b6040516370a0823160e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190610bb7908590600401611a9f565b6040516387f6492d60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906387f6492d90611161907f000000000000000000000000000000000000000000000000000000000000000090600090600401611ab3565b600060405180830381600087803b15801561117b57600080fd5b505af115801561118f573d6000803e3d6000fd5b5050505061119d8133611411565b60405163e50e637160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e50e63719061120d907f00000000000000000000000000000000000000000000000000000000000000009085903390600401611ace565b600060405180830381600087803b15801561122757600080fd5b505af115801561123b573d6000803e3d6000fd5b5050604051838152339250600080516020611bd4833981519152915060200160405180910390a250565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ed9a55406040518163ffffffff1660e01b815260040160206040518083038186803b1580156112c057600080fd5b505afa1580156112d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f891906118e9565b6001600160a01b031663ffcd42637f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b8152600401611365929190611b3d565b60006040518083038186803b15801561137d57600080fd5b505afa158015611391573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113b9919081019061198f565b50919392505050565b60405163f122977760e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f122977790610bb7908590600401611a9f565b6040516333b377df60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636766efbe90611481907f00000000000000000000000000000000000000000000000000000000000000009086908690600401611ace565b600060405180830381600087803b15801561149b57600080fd5b505af11580156114af573d6000803e3d6000fd5b505050505050565b61150d8363a9059cbb60e01b84846040516024016114d6929190611af1565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261167b565b505050565b6040516001600160a01b038085166024830152831660448201526064810182905261061d9085906323b872dd60e01b906084016114d6565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906115b8907f0000000000000000000000000000000000000000000000000000000000000000908690600401611af1565b602060405180830381600087803b1580156115d257600080fd5b505af11580156115e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160a919061193b565b5060405163322083db60e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c8820f6c90611481907f00000000000000000000000000000000000000000000000000000000000000009086908690600401611ace565b60006116d0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166117529092919063ffffffff16565b80519091501561150d57808060200190518101906116ee919061193b565b61150d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084015b60405180910390fd5b6060611761848460008561176b565b90505b9392505050565b6060824710156117cc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611749565b843b61181a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611749565b600080866001600160a01b031685876040516118369190611a83565b60006040518083038185875af1925050503d8060008114611873576040519150601f19603f3d011682016040523d82523d6000602084013e611878565b606091505b5091509150611888828286611893565b979650505050505050565b606083156118a2575081611764565b8251156118b25782518084602001fd5b8160405162461bcd60e51b81526004016117499190611b0a565b6000602082840312156118de57600080fd5b813561176481611bbb565b6000602082840312156118fb57600080fd5b815161176481611bbb565b60008060006060848603121561191b57600080fd5b833561192681611bbb565b95602085013595506040909401359392505050565b60006020828403121561194d57600080fd5b8151801515811461176457600080fd5b60006020828403121561196f57600080fd5b5035919050565b60006020828403121561198857600080fd5b5051919050565b600080600080608085870312156119a557600080fd5b8451935060208501516119b781611bbb565b604086015190935067ffffffffffffffff808211156119d557600080fd5b818701915087601f8301126119e957600080fd5b8151818111156119fb576119fb611ba5565b604051601f8201601f19908116603f01168101908382118183101715611a2357611a23611ba5565b816040528281528a6020848701011115611a3c57600080fd5b611a4d836020830160208801611b79565b60609990990151979a969950505050505050565b60008060408385031215611a7457600080fd5b50508035926020909101359150565b60008251611a95818460208701611b79565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039290921682521515602082015260400190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b6001600160a01b03929092168252602082015260400190565b6020815260008251806020840152611b29816040850160208701611b79565b601f01601f19169190910160400192915050565b9182526001600160a01b0316602082015260400190565b600082821015611b7457634e487b7160e01b600052601160045260246000fd5b500390565b60005b83811015611b94578181015183820152602001611b7c565b8381111561061d5750506000910152565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114611bd057600080fd5b5056fec0eb7a138362772da4d1d9adfe7f13a30f35b960c48ae439f3afcd4d08e81452a2646970667358221220303ff1da332756643843eec25dc4eb470b8d5099458f0d55690650394c0d148264736f6c63430008070033000000000000000000000000000000000000000000000000000000000000000800000000000000000000000003fe91a6c7996ed726dabe386c91027899aee45f000000000000000000000000b599c3590f42f8f995ecfa0f85d2980b76862fc1000000000000000000000000b599c3590f42f8f995ecfa0f85d2980b76862fc10000000000000000000000008b3d9f0017fa369cd8c164d0cc078bf4ca588ae5000000000000000000000000423d0fe33031aa4456a17b150804aa57fc157d97000000000000000000000000fdbd12b9b8befa930697c22e1020337f6edc48df000000000000000000000000060556209e507d30f2167a101bfc6d256ed2f3e1
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000000800000000000000000000000003fe91a6c7996ed726dabe386c91027899aee45f000000000000000000000000b599c3590f42f8f995ecfa0f85d2980b76862fc1000000000000000000000000b599c3590f42f8f995ecfa0f85d2980b76862fc10000000000000000000000008b3d9f0017fa369cd8c164d0cc078bf4ca588ae5000000000000000000000000423d0fe33031aa4456a17b150804aa57fc157d97000000000000000000000000fdbd12b9b8befa930697c22e1020337f6edc48df000000000000000000000000060556209e507d30f2167a101bfc6d256ed2f3e1
-----Decoded View---------------
Arg [0] : _pid (uint256): 8
Arg [1] : _stakingToken (address): 0x03fe91a6c7996ed726dabe386c91027899aee45f
Arg [2] : _depositToken (address): 0xb599c3590f42f8f995ecfa0f85d2980b76862fc1
Arg [3] : _assetToken (address): 0xb599c3590f42f8f995ecfa0f85d2980b76862fc1
Arg [4] : _mainStaking (address): 0x8b3d9f0017fa369cd8c164d0cc078bf4ca588ae5
Arg [5] : _masterVtx (address): 0x423d0fe33031aa4456a17b150804aa57fc157d97
Arg [6] : _rewarder (address): 0xfdbd12b9b8befa930697c22e1020337f6edc48df
Arg [7] : _xptp (address): 0x060556209e507d30f2167a101bfc6d256ed2f3e1
-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [1] : 00000000000000000000000003fe91a6c7996ed726dabe386c91027899aee45f
Arg [2] : 000000000000000000000000b599c3590f42f8f995ecfa0f85d2980b76862fc1
Arg [3] : 000000000000000000000000b599c3590f42f8f995ecfa0f85d2980b76862fc1
Arg [4] : 0000000000000000000000008b3d9f0017fa369cd8c164d0cc078bf4ca588ae5
Arg [5] : 000000000000000000000000423d0fe33031aa4456a17b150804aa57fc157d97
Arg [6] : 000000000000000000000000fdbd12b9b8befa930697c22e1020337f6edc48df
Arg [7] : 000000000000000000000000060556209e507d30f2167a101bfc6d256ed2f3e1
Deployed ByteCode Sourcemap
365:6868:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3163:258;;;;;;:::i;:::-;;:::i;:::-;;;;9358:25:8;;;9414:2;9399:18;;9392:34;;;;9331:18;3163:258:6;;;;;;;;587:35;;;;;;;;;;;;:::i;629:36::-;;;;;1370:116;;;:::i;:::-;;;8869:25:8;;;8857:2;8842:18;1370:116:6;8723:177:8;512:29:6;;;;;6750:121;;;:::i;:::-;;5203:351;;;;;;:::i;:::-;;:::i;2552:185::-;;;:::i;6228:472::-;;;;;;:::i;:::-;;:::i;469:37::-;;;;;547:34;;;;;2793:89;;;:::i;2199:177::-;;;;;;:::i;:::-;;:::i;4726:270::-;;;;;;:::i;:::-;;:::i;4147:483::-;;;;;;:::i;:::-;;:::i;426:37::-;;;;;671:33;;;;;1943:134;;;;;;:::i;:::-;;:::i;5761:223::-;;;;;;:::i;:::-;;:::i;7018:213::-;;;:::i;711:28::-;;;;;1670:140;;;;;;:::i;:::-;;:::i;3163:258::-;3296:118;;-1:-1:-1;;;3296:118:6;;-1:-1:-1;;;;;3349:12:6;3704:15:8;;3296:118:6;;;3686:34:8;3375:10:6;3736:18:8;;;3729:43;3808:15;;;3788:18;;;3781:43;-1:-1:-1;;;;3311:9:6;3296:39;;;;3621:18:8;;3296:118:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3296:118:6;;;;;;;;;;;;:::i;:::-;3265:149;;;;-1:-1:-1;3163:258:6;;-1:-1:-1;;;;3163:258:6:o;1370:116::-;1414:7;1456:8;-1:-1:-1;;;;;1440:37:6;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1433:46;;1370:116;:::o;6750:121::-;2412:57;;-1:-1:-1;;;2412:57:6;;-1:-1:-1;;;;;2425:11:6;2412:38;;;;:57;;2451:10;;2463:5;;2412:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6799:65:6::1;::::0;-1:-1:-1;;;6799:65:6;;-1:-1:-1;;;;;6814:9:6::1;6799:36;::::0;-1:-1:-1;6799:36:6::1;::::0;-1:-1:-1;6799:65:6::1;::::0;6836:12:::1;::::0;6850:1:::1;::::0;6853:10:::1;::::0;6799:65:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;6750:121::o:0;5203:351::-;2412:57;;-1:-1:-1;;;2412:57:6;;-1:-1:-1;;;;;2425:11:6;2412:38;;;;:57;;2451:10;;2463:5;;2412:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5284:28:::1;5293:6;5301:10;5284:8;:28::i;:::-;5322:179;::::0;-1:-1:-1;;;5322:179:6;;-1:-1:-1;;;;;5388:12:6::1;5605:15:8::0;;5322:179:6::1;::::0;::::1;5587:34:8::0;5414:10:6::1;5657:15:8::0;;5637:18;;;5630:43;5689:18;;;5682:34;;;5732:18;;;5725:34;;;5481:10:6::1;5775:19:8::0;;;5768:44;5335:11:6::1;5322:52;::::0;::::1;::::0;5521:19:8;;5322:179:6::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5516:31:6::1;::::0;8869:25:8;;;5528:10:6::1;::::0;-1:-1:-1;;;;;;;;;;;;5516:31:6;-1:-1:-1;8857:2:8;8842:18;5516:31:6::1;;;;;;;5203:351:::0;;:::o;2552:185::-;2588:56;;-1:-1:-1;;;2588:56:6;;-1:-1:-1;;;;;2601:11:6;2588:38;;;;:56;;2627:10;;2639:4;;2588:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2654:76;2680:10;2699:4;-1:-1:-1;;;;;2692:22:6;;2723:4;2692:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2661:4:6;2654:25;;:76;:25;:76::i;:::-;2552:185::o;6228:472::-;2412:57;;-1:-1:-1;;;2412:57:6;;-1:-1:-1;;;;;2425:11:6;2412:38;;;;:57;;2451:10;;2463:5;;2412:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6381:28:::1;6390:6;6398:10;6381:8;:28::i;:::-;6419:228;::::0;-1:-1:-1;;;6419:228:6;;-1:-1:-1;;;;;6504:12:6::1;4178:15:8::0;;6419:228:6::1;::::0;::::1;4160:34:8::0;4230:15;;;4210:18;;;4203:43;6560:10:6::1;4282:15:8::0;;4262:18;;;4255:43;4314:18;;;4307:34;;;4357:19;;;4350:35;;;6627:10:6::1;4401:19:8::0;;;4394:44;6432:11:6::1;6419:71;::::0;::::1;::::0;4094:19:8;;6419:228:6::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6662:31:6::1;::::0;8869:25:8;;;6674:10:6::1;::::0;-1:-1:-1;;;;;;;;;;;;6662:31:6;-1:-1:-1;8857:2:8;8842:18;6662:31:6::1;;;;;;;;6228:472:::0;;;:::o;2793:89::-;2828:47;;-1:-1:-1;;;2828:47:6;;-1:-1:-1;;;;;2844:8:6;2828:35;;;;:47;;2864:10;;2828:47;;;:::i;2199:177::-;2264:7;2303:11;-1:-1:-1;;;;;2290:51:6;;2342:14;2350:5;2342:7;:14::i;:::-;2358:10;2290:79;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2283:86;2199:177;-1:-1:-1;;2199:177:6:o;4726:270::-;4777:73;-1:-1:-1;;;;;4784:12:6;4777:37;4815:10;4835:4;4842:7;4777:37;:73::i;:::-;4860:48;;-1:-1:-1;;;4860:48:6;;-1:-1:-1;;;;;4867:12:6;4860:28;;;;:48;;4889:9;;4900:7;;4860:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4918:71:6;;-1:-1:-1;;;4918:71:6;;-1:-1:-1;;;;;4933:9:6;4918:36;;;;:71;;4955:12;;4969:7;;4978:10;;4918:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4726:270;:::o;4147:483::-;2412:57;;-1:-1:-1;;;2412:57:6;;-1:-1:-1;;;;;2425:11:6;2412:38;;;;:57;;2451:10;;2463:5;;2412:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4232:45:6::1;::::0;-1:-1:-1;;;4232:45:6;;4208:21:::1;::::0;-1:-1:-1;;;;;;4239:12:6::1;4232:30;::::0;-1:-1:-1;4232:30:6::1;::::0;:45:::1;::::0;4271:4:::1;::::0;4232:45:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4287:155;::::0;-1:-1:-1;;;4287:155:6;;-1:-1:-1;;;;;4352:12:6::1;5116:15:8::0;;4287:155:6::1;::::0;::::1;5098:34:8::0;4378:10:6::1;5168:15:8::0;;5148:18;;;5141:43;5200:18;;;5193:34;;;4422:10:6::1;5243:18:8::0;;;5236:43;4208:69:6;;-1:-1:-1;4300:11:6::1;4287:51:::0;;::::1;::::0;::::1;::::0;5032:19:8;;4287:155:6::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4475:45:6::1;::::0;-1:-1:-1;;;4475:45:6;;4452:20:::1;::::0;-1:-1:-1;;;;;;4482:12:6::1;4475:30;::::0;-1:-1:-1;4475:30:6::1;::::0;:45:::1;::::0;4514:4:::1;::::0;4475:45:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4452:68:::0;-1:-1:-1;4530:48:6::1;4537:28;4552:13:::0;4452:68;4537:28:::1;:::i;:::-;4567:10;4530:6;:48::i;:::-;4593:30;::::0;8869:25:8;;;4604:10:6::1;::::0;4593:30:::1;::::0;8857:2:8;8842:18;4593:30:6::1;8723:177:8::0;1943:134:6;2025:45;;-1:-1:-1;;;2025:45:6;;1999:7;;-1:-1:-1;;;;;2041:8:6;2025:35;;;;:45;;2061:8;;2025:45;;;:::i;5761:223::-;2412:57;;-1:-1:-1;;;2412:57:6;;-1:-1:-1;;;;;2425:11:6;2412:38;;;;:57;;2451:10;;2463:5;;2412:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5825:28:::1;5834:6;5842:10;5825:8;:28::i;:::-;5863:68;::::0;-1:-1:-1;;;5863:68:6;;-1:-1:-1;;;;;5876:11:6::1;5863:36;::::0;::::1;::::0;:68:::1;::::0;5900:10:::1;::::0;5912:6;;5920:10:::1;::::0;5863:68:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5946:31:6::1;::::0;8869:25:8;;;5958:10:6::1;::::0;-1:-1:-1;;;;;;;;;;;;5946:31:6;-1:-1:-1;8857:2:8;8842:18;5946:31:6::1;;;;;;;5761:223:::0;:::o;7018:213::-;7063:21;7149:11;-1:-1:-1;;;;;7136:40:6;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;7120:86:6;;7207:3;7212:11;7120:104;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7120:104:6;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7096:128:6;;7018:213;-1:-1:-1;;;7018:213:6:o;1670:140::-;1756:47;;-1:-1:-1;;;1756:47:6;;1730:7;;-1:-1:-1;;;;;1772:8:6;1756:40;;;;:47;;1797:5;;1756:47;;;:::i;3799:145::-;3869:68;;-1:-1:-1;;;3869:68:6;;-1:-1:-1;;;;;3884:9:6;3869:37;;;;:68;;3907:12;;3921:7;;3930:6;;3869:68;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3799:145;;:::o;683:205:7:-;795:86;815:5;845:23;;;870:2;874:5;822:58;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;822:58:7;;;;;;;;;;;;;;-1:-1:-1;;;;;822:58:7;-1:-1:-1;;;;;;822:58:7;;;;;;;;;;795:19;:86::i;:::-;683:205;;;:::o;894:241::-;1059:68;;-1:-1:-1;;;;;4707:15:8;;;1059:68:7;;;4689:34:8;4759:15;;4739:18;;;4732:43;4791:18;;;4784:34;;;1032:96:7;;1052:5;;-1:-1:-1;;;1082:27:7;4624:18:8;;1059:68:7;4449:375:8;3517:200:6;3585:48;;-1:-1:-1;;;3585:48:6;;-1:-1:-1;;;;;3592:12:6;3585:28;;;;:48;;3614:9;;3625:7;;3585:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3643:67:6;;-1:-1:-1;;;3643:67:6;;-1:-1:-1;;;;;3658:9:6;3643:36;;;;:67;;3680:12;;3694:7;;3703:6;;3643:67;;;:::i;3189:706:7:-;3608:23;3634:69;3662:4;3634:69;;;;;;;;;;;;;;;;;3642:5;-1:-1:-1;;;;;3634:27:7;;;:69;;;;;:::i;:::-;3717:17;;3608:95;;-1:-1:-1;3717:21:7;3713:176;;3812:10;3801:30;;;;;;;;;;;;:::i;:::-;3793:85;;;;-1:-1:-1;;;3793:85:7;;8514:2:8;3793:85:7;;;8496:21:8;8553:2;8533:18;;;8526:30;8592:34;8572:18;;;8565:62;-1:-1:-1;;;8643:18:8;;;8636:40;8693:19;;3793:85:7;;;;;;;;3514:223:0;3647:12;3678:52;3700:6;3708:4;3714:1;3717:12;3678:21;:52::i;:::-;3671:59;;3514:223;;;;;;:::o;4601:499::-;4766:12;4823:5;4798:21;:30;;4790:81;;;;-1:-1:-1;;;4790:81:0;;7749:2:8;4790:81:0;;;7731:21:8;7788:2;7768:18;;;7761:30;7827:34;7807:18;;;7800:62;-1:-1:-1;;;7878:18:8;;;7871:36;7924:19;;4790:81:0;7547:402:8;4790:81:0;1087:20;;4881:60;;;;-1:-1:-1;;;4881:60:0;;8156:2:8;4881:60:0;;;8138:21:8;8195:2;8175:18;;;8168:30;8234:31;8214:18;;;8207:59;8283:18;;4881:60:0;7954:353:8;4881:60:0;4953:12;4967:23;4994:6;-1:-1:-1;;;;;4994:11:0;5013:5;5020:4;4994:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4952:73;;;;5042:51;5059:7;5068:10;5080:12;5042:16;:51::i;:::-;5035:58;4601:499;-1:-1:-1;;;;;;;4601:499:0:o;7214:692::-;7360:12;7388:7;7384:516;;;-1:-1:-1;7418:10:0;7411:17;;7384:516;7529:17;;:21;7525:365;;7723:10;7717:17;7783:15;7770:10;7766:2;7762:19;7755:44;7525:365;7862:12;7855:20;;-1:-1:-1;;;7855:20:0;;;;;;;;:::i;14:247:8:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;200:31;225:5;200:31;:::i;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:52;;;405:1;402;395:12;357:52;437:9;431:16;456:31;481:5;456:31;:::i;522:383::-;599:6;607;615;668:2;656:9;647:7;643:23;639:32;636:52;;;684:1;681;674:12;636:52;723:9;710:23;742:31;767:5;742:31;:::i;:::-;792:5;844:2;829:18;;816:32;;-1:-1:-1;895:2:8;880:18;;;867:32;;522:383;-1:-1:-1;;;522:383:8:o;910:277::-;977:6;1030:2;1018:9;1009:7;1005:23;1001:32;998:52;;;1046:1;1043;1036:12;998:52;1078:9;1072:16;1131:5;1124:13;1117:21;1110:5;1107:32;1097:60;;1153:1;1150;1143:12;1192:180;1251:6;1304:2;1292:9;1283:7;1279:23;1275:32;1272:52;;;1320:1;1317;1310:12;1272:52;-1:-1:-1;1343:23:8;;1192:180;-1:-1:-1;1192:180:8:o;1377:184::-;1447:6;1500:2;1488:9;1479:7;1475:23;1471:32;1468:52;;;1516:1;1513;1506:12;1468:52;-1:-1:-1;1539:16:8;;1377:184;-1:-1:-1;1377:184:8:o;1566:1135::-;1673:6;1681;1689;1697;1750:3;1738:9;1729:7;1725:23;1721:33;1718:53;;;1767:1;1764;1757:12;1718:53;1796:9;1790:16;1780:26;;1849:2;1838:9;1834:18;1828:25;1862:31;1887:5;1862:31;:::i;:::-;1961:2;1946:18;;1940:25;1912:5;;-1:-1:-1;1984:18:8;2014:14;;;2011:34;;;2041:1;2038;2031:12;2011:34;2079:6;2068:9;2064:22;2054:32;;2124:7;2117:4;2113:2;2109:13;2105:27;2095:55;;2146:1;2143;2136:12;2095:55;2175:2;2169:9;2197:2;2193;2190:10;2187:36;;;2203:18;;:::i;:::-;2278:2;2272:9;2246:2;2332:13;;-1:-1:-1;;2328:22:8;;;2352:2;2324:31;2320:40;2308:53;;;2376:18;;;2396:22;;;2373:46;2370:72;;;2422:18;;:::i;:::-;2462:10;2458:2;2451:22;2497:2;2489:6;2482:18;2537:7;2532:2;2527;2523;2519:11;2515:20;2512:33;2509:53;;;2558:1;2555;2548:12;2509:53;2571:55;2623:2;2618;2610:6;2606:15;2601:2;2597;2593:11;2571:55;:::i;:::-;2691:2;2676:18;;;;2670:25;1566:1135;;;;-1:-1:-1;;;;;;;1566:1135:8:o;2706:248::-;2774:6;2782;2835:2;2823:9;2814:7;2810:23;2806:32;2803:52;;;2851:1;2848;2841:12;2803:52;-1:-1:-1;;2874:23:8;;;2944:2;2929:18;;;2916:32;;-1:-1:-1;2706:248:8:o;2959:274::-;3088:3;3126:6;3120:13;3142:53;3188:6;3183:3;3176:4;3168:6;3164:17;3142:53;:::i;:::-;3211:16;;;;;2959:274;-1:-1:-1;;2959:274:8:o;3238:203::-;-1:-1:-1;;;;;3402:32:8;;;;3384:51;;3372:2;3357:18;;3238:203::o;5823:284::-;-1:-1:-1;;;;;6009:32:8;;;;5991:51;;6085:14;6078:22;6073:2;6058:18;;6051:50;5979:2;5964:18;;5823:284::o;6112:383::-;-1:-1:-1;;;;;6378:15:8;;;6360:34;;6425:2;6410:18;;6403:34;;;;6473:15;;;6468:2;6453:18;;6446:43;6310:2;6295:18;;6112:383::o;6500:274::-;-1:-1:-1;;;;;6692:32:8;;;;6674:51;;6756:2;6741:18;;6734:34;6662:2;6647:18;;6500:274::o;7159:383::-;7308:2;7297:9;7290:21;7271:4;7340:6;7334:13;7383:6;7378:2;7367:9;7363:18;7356:34;7399:66;7458:6;7453:2;7442:9;7438:18;7433:2;7425:6;7421:15;7399:66;:::i;:::-;7526:2;7505:15;-1:-1:-1;;7501:29:8;7486:45;;;;7533:2;7482:54;;7159:383;-1:-1:-1;;7159:383:8:o;8905:274::-;9079:25;;;-1:-1:-1;;;;;9140:32:8;9135:2;9120:18;;9113:60;9067:2;9052:18;;8905:274::o;9437:222::-;9477:4;9505:1;9502;9499:8;9496:131;;;9549:10;9544:3;9540:20;9537:1;9530:31;9584:4;9581:1;9574:15;9612:4;9609:1;9602:15;9496:131;-1:-1:-1;9644:9:8;;9437:222::o;9664:258::-;9736:1;9746:113;9760:6;9757:1;9754:13;9746:113;;;9836:11;;;9830:18;9817:11;;;9810:39;9782:2;9775:10;9746:113;;;9877:6;9874:1;9871:13;9868:48;;;-1:-1:-1;;9912:1:8;9894:16;;9887:27;9664:258::o;9927:127::-;9988:10;9983:3;9979:20;9976:1;9969:31;10019:4;10016:1;10009:15;10043:4;10040:1;10033:15;10059:131;-1:-1:-1;;;;;10134:31:8;;10124:42;;10114:70;;10180:1;10177;10170:12;10114:70;10059:131;:::o
Swarm Source
ipfs://303ff1da332756643843eec25dc4eb470b8d5099458f0d55690650394c0d1482
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.