Source Code
Overview
HYPE Balance
HYPE Value
$0.00Latest 11 from a total of 11 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Platform Withdra... | 20345324 | 60 days ago | IN | 0 HYPE | 0.00001656 | ||||
| Withdraw | 20345301 | 60 days ago | IN | 0 HYPE | 0.00003756 | ||||
| Platform Withdra... | 20345076 | 60 days ago | IN | 0 HYPE | 0.00000526 | ||||
| Platform Withdra... | 20345059 | 60 days ago | IN | 0 HYPE | 0.00002509 | ||||
| Deposit With Ref... | 20344416 | 60 days ago | IN | 0 HYPE | 0.00005675 | ||||
| Withdraw | 20343634 | 60 days ago | IN | 0 HYPE | 0.00000827 | ||||
| Deposit | 20343478 | 60 days ago | IN | 0 HYPE | 0.00002786 | ||||
| Deposit | 20343357 | 60 days ago | IN | 0 HYPE | 0.00000468 | ||||
| Deposit | 20343339 | 60 days ago | IN | 0 HYPE | 0.00000468 | ||||
| Set Manager | 20141998 | 62 days ago | IN | 0 HYPE | 0.00028755 | ||||
| Set Manager | 20141980 | 62 days ago | IN | 0 HYPE | 0.00016397 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Cross-Chain Transactions
Loading...
Loading
Contract Name:
USDCVault
Compiler Version
v0.8.28+commit.7893614a
Contract Source Code (Solidity)
/**
*Submitted for verification at hyperevmscan.io on 2025-11-25
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.28;
/**
* @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 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.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}
// File npm/@openzeppelin/[email protected]/access/Ownable.sol
// Original license: SPDX_License_Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
pragma solidity ^0.8.28;
/**
* @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.
*
* The initial owner is set to the address provided by the deployer. This can
* later be changed with {transferOwnership}.
*
* 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.
*/
abstract contract Ownable is Context {
address private _owner;
/**
* @dev The caller account is not authorized to perform an operation.
*/
error OwnableUnauthorizedAccount(address account);
/**
* @dev The owner is not a valid owner account. (eg. `address(0)`)
*/
error OwnableInvalidOwner(address owner);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the address provided by the deployer as the initial owner.
*/
constructor(address initialOwner) {
if (initialOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(initialOwner);
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
if (owner() != _msgSender()) {
revert OwnableUnauthorizedAccount(_msgSender());
}
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(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 virtual onlyOwner {
if (newOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
// File npm/@openzeppelin/[email protected]/token/ERC20/IERC20.sol
// Original license: SPDX_License_Identifier: MIT
// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/IERC20.sol)
pragma solidity >=0.4.16;
/**
* @dev Interface of the ERC-20 standard as defined in the ERC.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev Returns the value of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the value of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves a `value` amount of tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 value) 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 a `value` amount of tokens 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 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the
* allowance mechanism. `value` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address from, address to, uint256 value) external returns (bool);
}
// File npm/@openzeppelin/[email protected]/token/ERC20/extensions/IERC20Metadata.sol
// Original license: SPDX_License_Identifier: MIT
// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/extensions/IERC20Metadata.sol)
pragma solidity >=0.6.2;
/**
* @dev Interface for the optional metadata functions from the ERC-20 standard.
*/
interface IERC20Metadata is IERC20 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}
// File npm/@openzeppelin/[email protected]/utils/introspection/IERC165.sol
// Original license: SPDX_License_Identifier: MIT
// OpenZeppelin Contracts (last updated v5.4.0) (utils/introspection/IERC165.sol)
pragma solidity >=0.4.16;
/**
* @dev Interface of the ERC-165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[ERC].
*
* Implementers can declare support of contract interfaces, which can then be
* queried by others ({ERC165Checker}).
*
* For an implementation, see {ERC165}.
*/
interface IERC165 {
/**
* @dev Returns true if this contract implements the interface defined by
* `interfaceId`. See the corresponding
* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]
* to learn more about how these ids are created.
*
* This function call must use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
// File npm/@openzeppelin/[email protected]/interfaces/IERC165.sol
// Original license: SPDX_License_Identifier: MIT
// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/IERC165.sol)
pragma solidity >=0.4.16;
// File npm/@openzeppelin/[email protected]/interfaces/IERC20.sol
// Original license: SPDX_License_Identifier: MIT
// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/IERC20.sol)
pragma solidity >=0.4.16;
// File npm/@openzeppelin/[email protected]/interfaces/IERC1363.sol
// Original license: SPDX_License_Identifier: MIT
// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/IERC1363.sol)
pragma solidity >=0.6.2;
/**
* @title IERC1363
* @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].
*
* Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract
* after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.
*/
interface IERC1363 is IERC20, IERC165 {
/*
* Note: the ERC-165 identifier for this interface is 0xb0202a11.
* 0xb0202a11 ===
* bytes4(keccak256('transferAndCall(address,uint256)')) ^
* bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^
* bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^
* bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^
* bytes4(keccak256('approveAndCall(address,uint256)')) ^
* bytes4(keccak256('approveAndCall(address,uint256,bytes)'))
*/
/**
* @dev Moves a `value` amount of tokens from the caller's account to `to`
* and then calls {IERC1363Receiver-onTransferReceived} on `to`.
* @param to The address which you want to transfer to.
* @param value The amount of tokens to be transferred.
* @return A boolean value indicating whether the operation succeeded unless throwing.
*/
function transferAndCall(address to, uint256 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from the caller's account to `to`
* and then calls {IERC1363Receiver-onTransferReceived} on `to`.
* @param to The address which you want to transfer to.
* @param value The amount of tokens to be transferred.
* @param data Additional data with no specified format, sent in call to `to`.
* @return A boolean value indicating whether the operation succeeded unless throwing.
*/
function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism
* and then calls {IERC1363Receiver-onTransferReceived} on `to`.
* @param from The address which you want to send tokens from.
* @param to The address which you want to transfer to.
* @param value The amount of tokens to be transferred.
* @return A boolean value indicating whether the operation succeeded unless throwing.
*/
function transferFromAndCall(address from, address to, uint256 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism
* and then calls {IERC1363Receiver-onTransferReceived} on `to`.
* @param from The address which you want to send tokens from.
* @param to The address which you want to transfer to.
* @param value The amount of tokens to be transferred.
* @param data Additional data with no specified format, sent in call to `to`.
* @return A boolean value indicating whether the operation succeeded unless throwing.
*/
function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);
/**
* @dev Sets a `value` amount of tokens as the allowance of `spender` over the
* caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.
* @param spender The address which will spend the funds.
* @param value The amount of tokens to be spent.
* @return A boolean value indicating whether the operation succeeded unless throwing.
*/
function approveAndCall(address spender, uint256 value) external returns (bool);
/**
* @dev Sets a `value` amount of tokens as the allowance of `spender` over the
* caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.
* @param spender The address which will spend the funds.
* @param value The amount of tokens to be spent.
* @param data Additional data with no specified format, sent in call to `spender`.
* @return A boolean value indicating whether the operation succeeded unless throwing.
*/
function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);
}
// File npm/@openzeppelin/[email protected]/token/ERC20/utils/SafeERC20.sol
// Original license: SPDX_License_Identifier: MIT
// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/utils/SafeERC20.sol)
pragma solidity ^0.8.28;
/**
* @title SafeERC20
* @dev Wrappers around ERC-20 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 {
/**
* @dev An operation with an ERC-20 token failed.
*/
error SafeERC20FailedOperation(address token);
/**
* @dev Indicates a failed `decreaseAllowance` request.
*/
error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);
/**
* @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,
* non-reverting calls are assumed to be successful.
*/
function safeTransfer(IERC20 token, address to, uint256 value) internal {
_callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));
}
/**
* @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the
* calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.
*/
function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
_callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));
}
/**
* @dev Variant of {safeTransfer} that returns a bool instead of reverting if the operation is not successful.
*/
function trySafeTransfer(IERC20 token, address to, uint256 value) internal returns (bool) {
return _callOptionalReturnBool(token, abi.encodeCall(token.transfer, (to, value)));
}
/**
* @dev Variant of {safeTransferFrom} that returns a bool instead of reverting if the operation is not successful.
*/
function trySafeTransferFrom(IERC20 token, address from, address to, uint256 value) internal returns (bool) {
return _callOptionalReturnBool(token, abi.encodeCall(token.transferFrom, (from, to, value)));
}
/**
* @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,
* non-reverting calls are assumed to be successful.
*
* IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the "client"
* smart contract uses ERC-7674 to set temporary allowances, then the "client" smart contract should avoid using
* this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract
* that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.
*/
function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
uint256 oldAllowance = token.allowance(address(this), spender);
forceApprove(token, spender, oldAllowance + value);
}
/**
* @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no
* value, non-reverting calls are assumed to be successful.
*
* IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the "client"
* smart contract uses ERC-7674 to set temporary allowances, then the "client" smart contract should avoid using
* this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract
* that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.
*/
function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {
unchecked {
uint256 currentAllowance = token.allowance(address(this), spender);
if (currentAllowance < requestedDecrease) {
revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);
}
forceApprove(token, spender, currentAllowance - requestedDecrease);
}
}
/**
* @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,
* non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval
* to be set to zero before setting it to a non-zero value, such as USDT.
*
* NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function
* only sets the "standard" allowance. Any temporary allowance will remain active, in addition to the value being
* set here.
*/
function forceApprove(IERC20 token, address spender, uint256 value) internal {
bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));
if (!_callOptionalReturnBool(token, approvalCall)) {
_callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));
_callOptionalReturn(token, approvalCall);
}
}
/**
* @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no
* code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when
* targeting contracts.
*
* Reverts if the returned value is other than `true`.
*/
function transferAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {
if (to.code.length == 0) {
safeTransfer(token, to, value);
} else if (!token.transferAndCall(to, value, data)) {
revert SafeERC20FailedOperation(address(token));
}
}
/**
* @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target
* has no code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when
* targeting contracts.
*
* Reverts if the returned value is other than `true`.
*/
function transferFromAndCallRelaxed(
IERC1363 token,
address from,
address to,
uint256 value,
bytes memory data
) internal {
if (to.code.length == 0) {
safeTransferFrom(token, from, to, value);
} else if (!token.transferFromAndCall(from, to, value, data)) {
revert SafeERC20FailedOperation(address(token));
}
}
/**
* @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no
* code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when
* targeting contracts.
*
* NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.
* Opposedly, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}
* once without retrying, and relies on the returned value to be true.
*
* Reverts if the returned value is other than `true`.
*/
function approveAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {
if (to.code.length == 0) {
forceApprove(token, to, value);
} else if (!token.approveAndCall(to, value, data)) {
revert SafeERC20FailedOperation(address(token));
}
}
/**
* @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).
*
* This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements.
*/
function _callOptionalReturn(IERC20 token, bytes memory data) private {
uint256 returnSize;
uint256 returnValue;
assembly ("memory-safe") {
let success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)
// bubble errors
if iszero(success) {
let ptr := mload(0x40)
returndatacopy(ptr, 0, returndatasize())
revert(ptr, returndatasize())
}
returnSize := returndatasize()
returnValue := mload(0)
}
if (returnSize == 0 ? address(token).code.length == 0 : returnValue != 1) {
revert SafeERC20FailedOperation(address(token));
}
}
/**
* @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).
*
* This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead.
*/
function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {
bool success;
uint256 returnSize;
uint256 returnValue;
assembly ("memory-safe") {
success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)
returnSize := returndatasize()
returnValue := mload(0)
}
return success && (returnSize == 0 ? address(token).code.length > 0 : returnValue == 1);
}
}
// File npm/@openzeppelin/[email protected]/utils/ReentrancyGuard.sol
// Original license: SPDX_License_Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (utils/ReentrancyGuard.sol)
pragma solidity ^0.8.28;
/**
* @dev Contract module that helps prevent reentrant calls to a function.
*
* Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
* available, which can be applied to functions to make sure there are no nested
* (reentrant) calls to them.
*
* Note that because there is a single `nonReentrant` guard, functions marked as
* `nonReentrant` may not call one another. This can be worked around by making
* those functions `private`, and then adding `external` `nonReentrant` entry
* points to them.
*
* TIP: If EIP-1153 (transient storage) is available on the chain you're deploying at,
* consider using {ReentrancyGuardTransient} instead.
*
* TIP: If you would like to learn more about reentrancy and alternative ways
* to protect against it, check out our blog post
* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
*/
abstract contract ReentrancyGuard {
// Booleans are more expensive than uint256 or any type that takes up a full
// word because each write operation emits an extra SLOAD to first read the
// slot's contents, replace the bits taken up by the boolean, and then write
// back. This is the compiler's defense against contract upgrades and
// pointer aliasing, and it cannot be disabled.
// The values being non-zero value makes deployment a bit more expensive,
// but in exchange the refund on every call to nonReentrant will be lower in
// amount. Since refunds are capped to a percentage of the total
// transaction's gas, it is best to keep them low in cases like this one, to
// increase the likelihood of the full refund coming into effect.
uint256 private constant NOT_ENTERED = 1;
uint256 private constant ENTERED = 2;
uint256 private _status;
/**
* @dev Unauthorized reentrant call.
*/
error ReentrancyGuardReentrantCall();
constructor() {
_status = NOT_ENTERED;
}
/**
* @dev Prevents a contract from calling itself, directly or indirectly.
* Calling a `nonReentrant` function from another `nonReentrant`
* function is not supported. It is possible to prevent this from happening
* by making the `nonReentrant` function external, and making it call a
* `private` function that does the actual work.
*/
modifier nonReentrant() {
_nonReentrantBefore();
_;
_nonReentrantAfter();
}
function _nonReentrantBefore() private {
// On the first call to nonReentrant, _status will be NOT_ENTERED
if (_status == ENTERED) {
revert ReentrancyGuardReentrantCall();
}
// Any calls to nonReentrant after this point will fail
_status = ENTERED;
}
function _nonReentrantAfter() private {
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
_status = NOT_ENTERED;
}
/**
* @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a
* `nonReentrant` function in the call stack.
*/
function _reentrancyGuardEntered() internal view returns (bool) {
return _status == ENTERED;
}
}
// File contracts/USDCVault.sol
// Original license: SPDX_License_Identifier: MIT
pragma solidity ^0.8.28;
/// @title USDCVault
contract USDCVault is Ownable, ReentrancyGuard {
using SafeERC20 for IERC20Metadata;
IERC20Metadata public immutable token;
uint256 public immutable withdrawalFee;
mapping(address => uint256) private _credits;
mapping(address => uint256) private _locked_credits;
uint256 private _totalCredits;
mapping(address => address) public referrerOf;
uint16 public referralFeeBps;
mapping(address => bool) public isManager;
event Deposited(address indexed user, uint256 amount);
event Withdrawn(address indexed user, uint256 amount, uint256 fee);
event Locked(address indexed user, uint256 amount);
event Unlocked(address indexed user, uint256 amount);
event DuelPaidOut(address winner, address loser, uint256 payout);
event ReferralRegistered(address indexed user, address indexed referrer);
event PaidOutAfterUnlock(address recipient, uint256 locked_amount, uint256 payout);
event ReferralCommissionPaid(address referral, address invitee, uint256 fee);
event ManagerSet(address indexed manager, bool allowed);
constructor(address tokenAddress) Ownable(msg.sender) {
require(tokenAddress != address(0), "tokenAddress zero");
token = IERC20Metadata(tokenAddress);
uint8 dec = token.decimals();
withdrawalFee = 10 ** (dec - 1);
referralFeeBps = 1_000;
_totalCredits = 0;
}
function deposit(uint256 amount) external nonReentrant {
_deposit(amount, address(0));
}
function depositWithReferrer(uint256 amount, address referrer) external nonReentrant {
_deposit(amount, referrer);
}
function withdraw(uint256 amount) external nonReentrant {
require(amount > 0, "amount 0");
uint256 total = amount + withdrawalFee;
uint256 userCredit = _credits[msg.sender];
uint256 userLockedCredit = _locked_credits[msg.sender];
require((userCredit - userLockedCredit) >= total, "insufficient credit");
_credits[msg.sender] = userCredit - total;
_totalCredits -= total;
token.safeTransfer(msg.sender, amount);
emit Withdrawn(msg.sender, amount, withdrawalFee);
}
function lockFromPlayer(address locker, uint256 amount) external nonReentrant {
require(msg.sender == locker, "cannot lock other user credit");
require(amount <= _credits[locker], "insufficient credit");
_locked_credits[locker] += amount;
emit Locked(locker, amount);
}
function unlockToPlayer(address locker, uint256 amount) external nonReentrant {
require(isManager[msg.sender] || msg.sender == owner(), "unauthorized unlock");
require(amount <= _locked_credits[locker], "insufficient locked credit");
_locked_credits[locker] -= amount;
emit Unlocked(locker, amount);
}
function payoutDuelWinnerFromLocked(address winner, address loser, uint256 payout, uint256 entryFee, uint256 referralFee) external {
require(isManager[msg.sender], "unauthorized payout");
require(winner != address(0) && loser != address(0), "invalid addresses");
require(_locked_credits[winner] >= entryFee && _locked_credits[loser] >= entryFee, "invalid locked amount");
require(_credits[loser] >= entryFee, "invalid credit from loser");
_locked_credits[winner] -= entryFee;
_locked_credits[loser] -= entryFee;
_credits[winner] += (payout - entryFee);
_credits[loser] -= entryFee;
if (referrerOf[winner] != address(0)) {
_credits[referrerOf[winner]] += referralFee;
emit ReferralCommissionPaid(referrerOf[winner], winner, referralFee);
}
if (referrerOf[loser] != address(0)) {
_credits[referrerOf[loser]] += referralFee;
emit ReferralCommissionPaid(referrerOf[loser], loser, referralFee);
}
emit DuelPaidOut(winner, loser, payout);
}
function payoutCompetitionAfterUnlock(address recipient, uint256 locked_amount, uint256 payout, uint256 referralFee) external {
require(isManager[msg.sender], "unauthorized payout");
require(recipient != address(0), "invalid recipient");
require(_locked_credits[recipient] >= locked_amount, "not enough locked");
_locked_credits[recipient] -= locked_amount;
_credits[recipient] += (payout - locked_amount);
if (referrerOf[recipient] != address(0)) {
_credits[referrerOf[recipient]] += referralFee;
emit ReferralCommissionPaid(referrerOf[recipient], recipient, referralFee);
}
emit PaidOutAfterUnlock(recipient, locked_amount, payout);
}
function platformWithdraw(
address tokenAddress,
address to,
uint256 amount
) external onlyOwner {
require(to != address(0), "invalid recipient");
require(amount > 0, "amount 0");
// rug-pool prevention
IERC20 tokenToWithdraw = IERC20(tokenAddress);
uint256 balance = tokenToWithdraw.balanceOf(address(this));
require(balance >= amount, "insufficient token");
if (tokenAddress == address(token)) {
require(balance >= _totalCredits, "credit shortfall");
uint256 withdrawable = balance - _totalCredits;
require(amount <= withdrawable, "insufficient withdrawable");
}
SafeERC20.safeTransfer(tokenToWithdraw, to, amount);
}
function creditOf(address user) external view returns (uint256) {
return _credits[user];
}
function totalCredits() external view returns (uint256) {
return _totalCredits;
}
function setManager(address manager, bool allowed) external onlyOwner {
require(manager != address(0), "manager zero");
isManager[manager] = allowed;
emit ManagerSet(manager, allowed);
}
// ------------------ Internal helpers ------------------
function _deposit(uint256 amount, address referrer) internal {
require(amount > 0, "amount 0");
token.safeTransferFrom(msg.sender, address(this), amount);
_credits[msg.sender] += amount;
_totalCredits += amount;
if (referrer != address(0) && referrer != msg.sender && referrerOf[msg.sender] == address(0)) {
referrerOf[msg.sender] = referrer;
emit ReferralRegistered(msg.sender, referrer);
}
emit Deposited(msg.sender, amount);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"winner","type":"address"},{"indexed":false,"internalType":"address","name":"loser","type":"address"},{"indexed":false,"internalType":"uint256","name":"payout","type":"uint256"}],"name":"DuelPaidOut","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Locked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"manager","type":"address"},{"indexed":false,"internalType":"bool","name":"allowed","type":"bool"}],"name":"ManagerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"locked_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"payout","type":"uint256"}],"name":"PaidOutAfterUnlock","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"referral","type":"address"},{"indexed":false,"internalType":"address","name":"invitee","type":"address"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"ReferralCommissionPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"referrer","type":"address"}],"name":"ReferralRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Unlocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"creditOf","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":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"referrer","type":"address"}],"name":"depositWithReferrer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isManager","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"locker","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"lockFromPlayer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"locked_amount","type":"uint256"},{"internalType":"uint256","name":"payout","type":"uint256"},{"internalType":"uint256","name":"referralFee","type":"uint256"}],"name":"payoutCompetitionAfterUnlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"winner","type":"address"},{"internalType":"address","name":"loser","type":"address"},{"internalType":"uint256","name":"payout","type":"uint256"},{"internalType":"uint256","name":"entryFee","type":"uint256"},{"internalType":"uint256","name":"referralFee","type":"uint256"}],"name":"payoutDuelWinnerFromLocked","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"platformWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"referralFeeBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"referrerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"bool","name":"allowed","type":"bool"}],"name":"setManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20Metadata","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalCredits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"locker","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unlockToPlayer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60c060405234801561000f575f5ffd5b5060405161197f38038061197f83398101604081905261002e9161019e565b338061005457604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61005d8161014f565b50600180556001600160a01b0381166100ac5760405162461bcd60e51b8152602060048201526011602482015270746f6b656e41646472657373207a65726f60781b604482015260640161004b565b6001600160a01b03811660808190526040805163313ce56760e01b815290515f929163313ce5679160048083019260209291908290030181865afa1580156100f6573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061011a91906101cb565b90506101276001826101ff565b61013290600a610301565b60a05250506006805461ffff19166103e81790555f60045561030f565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156101ae575f5ffd5b81516001600160a01b03811681146101c4575f5ffd5b9392505050565b5f602082840312156101db575f5ffd5b815160ff811681146101c4575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b60ff8281168282160390811115610218576102186101eb565b92915050565b6001815b60018411156102595780850481111561023d5761023d6101eb565b600184161561024b57908102905b60019390931c928002610222565b935093915050565b5f8261026f57506001610218565b8161027b57505f610218565b8160018114610291576002811461029b576102b7565b6001915050610218565b60ff8411156102ac576102ac6101eb565b50506001821b610218565b5060208310610133831016604e8410600b84101617156102da575081810a610218565b6102e65f19848461021e565b805f19048211156102f9576102f96101eb565b029392505050565b5f6101c460ff841683610261565b60805160a05161162c6103535f395f81816101c90152818161097e0152610a8201525f81816102f60152818161044101528181610a5201526111aa015261162c5ff3fe608060405234801561000f575f5ffd5b506004361061011c575f3560e01c80638e2d3cda116100a9578063d21cacdf1161006e578063d21cacdf14610263578063d4bdb2661461028b578063f2fde38b146102ac578063f3ae2415146102bf578063fc0c546a146102f1575f5ffd5b80638e2d3cda1461020f578063a14c5e4d14610222578063a5e90eee14610235578063b5bd3eb914610248578063b6b55f2514610250575f5ffd5b80633827d83f116100ef5780633827d83f1461016e578063715018a61461018157806375807250146101895780638bc7e8c4146101c45780638da5cb5b146101eb575f5ffd5b806307fc7330146101205780630cb771851461013557806315982e1e146101485780632e1a7d4d1461015b575b5f5ffd5b61013361012e3660046113de565b610318565b005b610133610143366004611418565b610532565b610133610156366004611461565b610932565b61013361016936600461148b565b610951565b61013361017c3660046114a2565b610ae2565b610133610c13565b6101b16101973660046114ca565b6001600160a01b03165f9081526002602052604090205490565b6040519081526020015b60405180910390f35b6101b17f000000000000000000000000000000000000000000000000000000000000000081565b5f546001600160a01b03165b6040516001600160a01b0390911681526020016101bb565b61013361021d3660046114a2565b610c26565b6101336102303660046114ea565b610d64565b610133610243366004611520565b610fc3565b6004546101b1565b61013361025e36600461148b565b61106f565b6101f76102713660046114ca565b60056020525f90815260409020546001600160a01b031681565b6006546102999061ffff1681565b60405161ffff90911681526020016101bb565b6101336102ba3660046114ca565b61108a565b6102e16102cd3660046114ca565b60076020525f908152604090205460ff1681565b60405190151581526020016101bb565b6101f77f000000000000000000000000000000000000000000000000000000000000000081565b6103206110c4565b6001600160a01b03821661036f5760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081c9958da5c1a595b9d607a1b60448201526064015b60405180910390fd5b5f811161038e5760405162461bcd60e51b815260040161036690611559565b6040516370a0823160e01b815230600482015283905f906001600160a01b038316906370a0823190602401602060405180830381865afa1580156103d4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103f8919061157b565b90508281101561043f5760405162461bcd60e51b815260206004820152601260248201527134b739bab33334b1b4b2b73a103a37b5b2b760711b6044820152606401610366565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031603610520576004548110156104bd5760405162461bcd60e51b815260206004820152601060248201526f18dc99591a5d081cda1bdc9d19985b1b60821b6044820152606401610366565b5f600454826104cc91906115a6565b90508084111561051e5760405162461bcd60e51b815260206004820152601960248201527f696e73756666696369656e7420776974686472617761626c65000000000000006044820152606401610366565b505b61052b8285856110f0565b5050505050565b335f9081526007602052604090205460ff166105865760405162461bcd60e51b81526020600482015260136024820152721d5b985d5d1a1bdc9a5e9959081c185e5bdd5d606a1b6044820152606401610366565b6001600160a01b038516158015906105a657506001600160a01b03841615155b6105e65760405162461bcd60e51b8152602060048201526011602482015270696e76616c69642061646472657373657360781b6044820152606401610366565b6001600160a01b0385165f90815260036020526040902054821180159061062457506001600160a01b0384165f908152600360205260409020548211155b6106685760405162461bcd60e51b81526020600482015260156024820152741a5b9d985b1a59081b1bd8dad95908185b5bdd5b9d605a1b6044820152606401610366565b6001600160a01b0384165f908152600260205260409020548211156106cf5760405162461bcd60e51b815260206004820152601960248201527f696e76616c6964206372656469742066726f6d206c6f736572000000000000006044820152606401610366565b6001600160a01b0385165f90815260036020526040812080548492906106f69084906115a6565b90915550506001600160a01b0384165f90815260036020526040812080548492906107229084906115a6565b90915550610732905082846115a6565b6001600160a01b0386165f90815260026020526040812080549091906107599084906115bf565b90915550506001600160a01b0384165f90815260026020526040812080548492906107859084906115a6565b90915550506001600160a01b038581165f90815260056020526040902054161561083d576001600160a01b038086165f9081526005602090815260408083205490931682526002905290812080548392906107e19084906115bf565b90915550506001600160a01b038086165f90815260056020526040908190205490517f86ddab457291316e0f5496737e5ca67c4037234c32c3be04c48ae96186893a7b92610834921690889085906115d2565b60405180910390a15b6001600160a01b038481165f9081526005602052604090205416156108f0576001600160a01b038085165f9081526005602090815260408083205490931682526002905290812080548392906108949084906115bf565b90915550506001600160a01b038085165f90815260056020526040908190205490517f86ddab457291316e0f5496737e5ca67c4037234c32c3be04c48ae96186893a7b926108e7921690879085906115d2565b60405180910390a15b7fc5d379f1354c2bd51756c8b3be00ef7092716a3d002e55936be85c8da402d24f858585604051610923939291906115d2565b60405180910390a15050505050565b61093a611154565b610944828261117e565b61094d60018055565b5050565b610959611154565b5f81116109785760405162461bcd60e51b815260040161036690611559565b5f6109a37f0000000000000000000000000000000000000000000000000000000000000000836115bf565b335f9081526002602090815260408083205460039092529091205491925090826109cd82846115a6565b1015610a115760405162461bcd60e51b81526020600482015260136024820152721a5b9cdd59999a58da595b9d0818dc99591a5d606a1b6044820152606401610366565b610a1b83836115a6565b335f9081526002602052604081209190915560048054859290610a3f9084906115a6565b90915550610a7990506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633866110f0565b604080518581527f0000000000000000000000000000000000000000000000000000000000000000602082015233917f92ccf450a286a957af52509bc1c9939d1a6a481783e142e41e2499f0bb66ebc6910160405180910390a2505050610adf60018055565b50565b610aea611154565b336001600160a01b03831614610b425760405162461bcd60e51b815260206004820152601d60248201527f63616e6e6f74206c6f636b206f746865722075736572206372656469740000006044820152606401610366565b6001600160a01b0382165f90815260026020526040902054811115610b9f5760405162461bcd60e51b81526020600482015260136024820152721a5b9cdd59999a58da595b9d0818dc99591a5d606a1b6044820152606401610366565b6001600160a01b0382165f9081526003602052604081208054839290610bc69084906115bf565b90915550506040518181526001600160a01b038316907f9f1ec8c880f76798e7b793325d625e9b60e4082a553c98f42b6cda368dd60008906020015b60405180910390a261094d60018055565b610c1b6110c4565b610c245f6112da565b565b610c2e611154565b335f9081526007602052604090205460ff1680610c5457505f546001600160a01b031633145b610c965760405162461bcd60e51b8152602060048201526013602482015272756e617574686f72697a656420756e6c6f636b60681b6044820152606401610366565b6001600160a01b0382165f90815260036020526040902054811115610cfd5760405162461bcd60e51b815260206004820152601a60248201527f696e73756666696369656e74206c6f636b6564206372656469740000000000006044820152606401610366565b6001600160a01b0382165f9081526003602052604081208054839290610d249084906115a6565b90915550506040518181526001600160a01b038316907f0f0bc5b519ddefdd8e5f9e6423433aa2b869738de2ae34d58ebc796fc749fa0d90602001610c02565b335f9081526007602052604090205460ff16610db85760405162461bcd60e51b81526020600482015260136024820152721d5b985d5d1a1bdc9a5e9959081c185e5bdd5d606a1b6044820152606401610366565b6001600160a01b038416610e025760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081c9958da5c1a595b9d607a1b6044820152606401610366565b6001600160a01b0384165f90815260036020526040902054831115610e5d5760405162461bcd60e51b81526020600482015260116024820152701b9bdd08195b9bdd59da081b1bd8dad959607a1b6044820152606401610366565b6001600160a01b0384165f9081526003602052604081208054859290610e849084906115a6565b90915550610e94905083836115a6565b6001600160a01b0385165f9081526002602052604081208054909190610ebb9084906115bf565b90915550506001600160a01b038481165f908152600560205260409020541615610f73576001600160a01b038085165f908152600560209081526040808320549093168252600290529081208054839290610f179084906115bf565b90915550506001600160a01b038085165f90815260056020526040908190205490517f86ddab457291316e0f5496737e5ca67c4037234c32c3be04c48ae96186893a7b92610f6a921690879085906115d2565b60405180910390a15b604080516001600160a01b0386168152602081018590529081018390527ff614b5a0f5f18214723d9a0b51167c56e9c869d0333c3f22233a9b23c2d8d4fe9060600160405180910390a150505050565b610fcb6110c4565b6001600160a01b0382166110105760405162461bcd60e51b815260206004820152600c60248201526b6d616e61676572207a65726f60a01b6044820152606401610366565b6001600160a01b0382165f81815260076020908152604091829020805460ff191685151590811790915591519182527fff83ce179bad4fbdb0e98074011487cde624295a52d8189d92d5d8b06c914eda91015b60405180910390a25050565b611077611154565b611081815f61117e565b610adf60018055565b6110926110c4565b6001600160a01b0381166110bb57604051631e4fbdf760e01b81525f6004820152602401610366565b610adf816112da565b5f546001600160a01b03163314610c245760405163118cdaa760e01b8152336004820152602401610366565b6040516001600160a01b0383811660248301526044820183905261114f91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611329565b505050565b60026001540361117757604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b5f821161119d5760405162461bcd60e51b815260040161036690611559565b6111d26001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308561139b565b335f90815260026020526040812080548492906111f09084906115bf565b925050819055508160045f82825461120891906115bf565b90915550506001600160a01b0381161580159061122e57506001600160a01b0381163314155b801561124f5750335f908152600560205260409020546001600160a01b0316155b156112a857335f8181526005602052604080822080546001600160a01b0319166001600160a01b03861690811790915590519092917f5f1ca2fcc108b751843a763e60d2201f593516109d7dbb1b700468f2d4190bb791a35b60405182815233907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c490602001611063565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f5f60205f8451602086015f885af180611348576040513d5f823e3d81fd5b50505f513d9150811561135f57806001141561136c565b6001600160a01b0384163b155b1561139557604051635274afe760e01b81526001600160a01b0385166004820152602401610366565b50505050565b61139584856001600160a01b03166323b872dd86868660405160240161111d939291906115d2565b80356001600160a01b03811681146113d9575f5ffd5b919050565b5f5f5f606084860312156113f0575f5ffd5b6113f9846113c3565b9250611407602085016113c3565b929592945050506040919091013590565b5f5f5f5f5f60a0868803121561142c575f5ffd5b611435866113c3565b9450611443602087016113c3565b94979496505050506040830135926060810135926080909101359150565b5f5f60408385031215611472575f5ffd5b82359150611482602084016113c3565b90509250929050565b5f6020828403121561149b575f5ffd5b5035919050565b5f5f604083850312156114b3575f5ffd5b6114bc836113c3565b946020939093013593505050565b5f602082840312156114da575f5ffd5b6114e3826113c3565b9392505050565b5f5f5f5f608085870312156114fd575f5ffd5b611506856113c3565b966020860135965060408601359560600135945092505050565b5f5f60408385031215611531575f5ffd5b61153a836113c3565b91506020830135801515811461154e575f5ffd5b809150509250929050565b6020808252600890820152670616d6f756e7420360c41b604082015260600190565b5f6020828403121561158b575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156115b9576115b9611592565b92915050565b808201808211156115b9576115b9611592565b6001600160a01b03938416815291909216602082015260408101919091526060019056fea26469706673582212203f0f685bb6676e712eeb3e2e5d5dbbc9e484b630fd65bd2f4b9a131bf2fd5a2d64736f6c634300081c0033000000000000000000000000b88339cb7199b77e23db6e890353e22632ba630f
Deployed Bytecode
0x608060405234801561000f575f5ffd5b506004361061011c575f3560e01c80638e2d3cda116100a9578063d21cacdf1161006e578063d21cacdf14610263578063d4bdb2661461028b578063f2fde38b146102ac578063f3ae2415146102bf578063fc0c546a146102f1575f5ffd5b80638e2d3cda1461020f578063a14c5e4d14610222578063a5e90eee14610235578063b5bd3eb914610248578063b6b55f2514610250575f5ffd5b80633827d83f116100ef5780633827d83f1461016e578063715018a61461018157806375807250146101895780638bc7e8c4146101c45780638da5cb5b146101eb575f5ffd5b806307fc7330146101205780630cb771851461013557806315982e1e146101485780632e1a7d4d1461015b575b5f5ffd5b61013361012e3660046113de565b610318565b005b610133610143366004611418565b610532565b610133610156366004611461565b610932565b61013361016936600461148b565b610951565b61013361017c3660046114a2565b610ae2565b610133610c13565b6101b16101973660046114ca565b6001600160a01b03165f9081526002602052604090205490565b6040519081526020015b60405180910390f35b6101b17f00000000000000000000000000000000000000000000000000000000000186a081565b5f546001600160a01b03165b6040516001600160a01b0390911681526020016101bb565b61013361021d3660046114a2565b610c26565b6101336102303660046114ea565b610d64565b610133610243366004611520565b610fc3565b6004546101b1565b61013361025e36600461148b565b61106f565b6101f76102713660046114ca565b60056020525f90815260409020546001600160a01b031681565b6006546102999061ffff1681565b60405161ffff90911681526020016101bb565b6101336102ba3660046114ca565b61108a565b6102e16102cd3660046114ca565b60076020525f908152604090205460ff1681565b60405190151581526020016101bb565b6101f77f000000000000000000000000b88339cb7199b77e23db6e890353e22632ba630f81565b6103206110c4565b6001600160a01b03821661036f5760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081c9958da5c1a595b9d607a1b60448201526064015b60405180910390fd5b5f811161038e5760405162461bcd60e51b815260040161036690611559565b6040516370a0823160e01b815230600482015283905f906001600160a01b038316906370a0823190602401602060405180830381865afa1580156103d4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103f8919061157b565b90508281101561043f5760405162461bcd60e51b815260206004820152601260248201527134b739bab33334b1b4b2b73a103a37b5b2b760711b6044820152606401610366565b7f000000000000000000000000b88339cb7199b77e23db6e890353e22632ba630f6001600160a01b0316856001600160a01b031603610520576004548110156104bd5760405162461bcd60e51b815260206004820152601060248201526f18dc99591a5d081cda1bdc9d19985b1b60821b6044820152606401610366565b5f600454826104cc91906115a6565b90508084111561051e5760405162461bcd60e51b815260206004820152601960248201527f696e73756666696369656e7420776974686472617761626c65000000000000006044820152606401610366565b505b61052b8285856110f0565b5050505050565b335f9081526007602052604090205460ff166105865760405162461bcd60e51b81526020600482015260136024820152721d5b985d5d1a1bdc9a5e9959081c185e5bdd5d606a1b6044820152606401610366565b6001600160a01b038516158015906105a657506001600160a01b03841615155b6105e65760405162461bcd60e51b8152602060048201526011602482015270696e76616c69642061646472657373657360781b6044820152606401610366565b6001600160a01b0385165f90815260036020526040902054821180159061062457506001600160a01b0384165f908152600360205260409020548211155b6106685760405162461bcd60e51b81526020600482015260156024820152741a5b9d985b1a59081b1bd8dad95908185b5bdd5b9d605a1b6044820152606401610366565b6001600160a01b0384165f908152600260205260409020548211156106cf5760405162461bcd60e51b815260206004820152601960248201527f696e76616c6964206372656469742066726f6d206c6f736572000000000000006044820152606401610366565b6001600160a01b0385165f90815260036020526040812080548492906106f69084906115a6565b90915550506001600160a01b0384165f90815260036020526040812080548492906107229084906115a6565b90915550610732905082846115a6565b6001600160a01b0386165f90815260026020526040812080549091906107599084906115bf565b90915550506001600160a01b0384165f90815260026020526040812080548492906107859084906115a6565b90915550506001600160a01b038581165f90815260056020526040902054161561083d576001600160a01b038086165f9081526005602090815260408083205490931682526002905290812080548392906107e19084906115bf565b90915550506001600160a01b038086165f90815260056020526040908190205490517f86ddab457291316e0f5496737e5ca67c4037234c32c3be04c48ae96186893a7b92610834921690889085906115d2565b60405180910390a15b6001600160a01b038481165f9081526005602052604090205416156108f0576001600160a01b038085165f9081526005602090815260408083205490931682526002905290812080548392906108949084906115bf565b90915550506001600160a01b038085165f90815260056020526040908190205490517f86ddab457291316e0f5496737e5ca67c4037234c32c3be04c48ae96186893a7b926108e7921690879085906115d2565b60405180910390a15b7fc5d379f1354c2bd51756c8b3be00ef7092716a3d002e55936be85c8da402d24f858585604051610923939291906115d2565b60405180910390a15050505050565b61093a611154565b610944828261117e565b61094d60018055565b5050565b610959611154565b5f81116109785760405162461bcd60e51b815260040161036690611559565b5f6109a37f00000000000000000000000000000000000000000000000000000000000186a0836115bf565b335f9081526002602090815260408083205460039092529091205491925090826109cd82846115a6565b1015610a115760405162461bcd60e51b81526020600482015260136024820152721a5b9cdd59999a58da595b9d0818dc99591a5d606a1b6044820152606401610366565b610a1b83836115a6565b335f9081526002602052604081209190915560048054859290610a3f9084906115a6565b90915550610a7990506001600160a01b037f000000000000000000000000b88339cb7199b77e23db6e890353e22632ba630f1633866110f0565b604080518581527f00000000000000000000000000000000000000000000000000000000000186a0602082015233917f92ccf450a286a957af52509bc1c9939d1a6a481783e142e41e2499f0bb66ebc6910160405180910390a2505050610adf60018055565b50565b610aea611154565b336001600160a01b03831614610b425760405162461bcd60e51b815260206004820152601d60248201527f63616e6e6f74206c6f636b206f746865722075736572206372656469740000006044820152606401610366565b6001600160a01b0382165f90815260026020526040902054811115610b9f5760405162461bcd60e51b81526020600482015260136024820152721a5b9cdd59999a58da595b9d0818dc99591a5d606a1b6044820152606401610366565b6001600160a01b0382165f9081526003602052604081208054839290610bc69084906115bf565b90915550506040518181526001600160a01b038316907f9f1ec8c880f76798e7b793325d625e9b60e4082a553c98f42b6cda368dd60008906020015b60405180910390a261094d60018055565b610c1b6110c4565b610c245f6112da565b565b610c2e611154565b335f9081526007602052604090205460ff1680610c5457505f546001600160a01b031633145b610c965760405162461bcd60e51b8152602060048201526013602482015272756e617574686f72697a656420756e6c6f636b60681b6044820152606401610366565b6001600160a01b0382165f90815260036020526040902054811115610cfd5760405162461bcd60e51b815260206004820152601a60248201527f696e73756666696369656e74206c6f636b6564206372656469740000000000006044820152606401610366565b6001600160a01b0382165f9081526003602052604081208054839290610d249084906115a6565b90915550506040518181526001600160a01b038316907f0f0bc5b519ddefdd8e5f9e6423433aa2b869738de2ae34d58ebc796fc749fa0d90602001610c02565b335f9081526007602052604090205460ff16610db85760405162461bcd60e51b81526020600482015260136024820152721d5b985d5d1a1bdc9a5e9959081c185e5bdd5d606a1b6044820152606401610366565b6001600160a01b038416610e025760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081c9958da5c1a595b9d607a1b6044820152606401610366565b6001600160a01b0384165f90815260036020526040902054831115610e5d5760405162461bcd60e51b81526020600482015260116024820152701b9bdd08195b9bdd59da081b1bd8dad959607a1b6044820152606401610366565b6001600160a01b0384165f9081526003602052604081208054859290610e849084906115a6565b90915550610e94905083836115a6565b6001600160a01b0385165f9081526002602052604081208054909190610ebb9084906115bf565b90915550506001600160a01b038481165f908152600560205260409020541615610f73576001600160a01b038085165f908152600560209081526040808320549093168252600290529081208054839290610f179084906115bf565b90915550506001600160a01b038085165f90815260056020526040908190205490517f86ddab457291316e0f5496737e5ca67c4037234c32c3be04c48ae96186893a7b92610f6a921690879085906115d2565b60405180910390a15b604080516001600160a01b0386168152602081018590529081018390527ff614b5a0f5f18214723d9a0b51167c56e9c869d0333c3f22233a9b23c2d8d4fe9060600160405180910390a150505050565b610fcb6110c4565b6001600160a01b0382166110105760405162461bcd60e51b815260206004820152600c60248201526b6d616e61676572207a65726f60a01b6044820152606401610366565b6001600160a01b0382165f81815260076020908152604091829020805460ff191685151590811790915591519182527fff83ce179bad4fbdb0e98074011487cde624295a52d8189d92d5d8b06c914eda91015b60405180910390a25050565b611077611154565b611081815f61117e565b610adf60018055565b6110926110c4565b6001600160a01b0381166110bb57604051631e4fbdf760e01b81525f6004820152602401610366565b610adf816112da565b5f546001600160a01b03163314610c245760405163118cdaa760e01b8152336004820152602401610366565b6040516001600160a01b0383811660248301526044820183905261114f91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611329565b505050565b60026001540361117757604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b5f821161119d5760405162461bcd60e51b815260040161036690611559565b6111d26001600160a01b037f000000000000000000000000b88339cb7199b77e23db6e890353e22632ba630f1633308561139b565b335f90815260026020526040812080548492906111f09084906115bf565b925050819055508160045f82825461120891906115bf565b90915550506001600160a01b0381161580159061122e57506001600160a01b0381163314155b801561124f5750335f908152600560205260409020546001600160a01b0316155b156112a857335f8181526005602052604080822080546001600160a01b0319166001600160a01b03861690811790915590519092917f5f1ca2fcc108b751843a763e60d2201f593516109d7dbb1b700468f2d4190bb791a35b60405182815233907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c490602001611063565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f5f60205f8451602086015f885af180611348576040513d5f823e3d81fd5b50505f513d9150811561135f57806001141561136c565b6001600160a01b0384163b155b1561139557604051635274afe760e01b81526001600160a01b0385166004820152602401610366565b50505050565b61139584856001600160a01b03166323b872dd86868660405160240161111d939291906115d2565b80356001600160a01b03811681146113d9575f5ffd5b919050565b5f5f5f606084860312156113f0575f5ffd5b6113f9846113c3565b9250611407602085016113c3565b929592945050506040919091013590565b5f5f5f5f5f60a0868803121561142c575f5ffd5b611435866113c3565b9450611443602087016113c3565b94979496505050506040830135926060810135926080909101359150565b5f5f60408385031215611472575f5ffd5b82359150611482602084016113c3565b90509250929050565b5f6020828403121561149b575f5ffd5b5035919050565b5f5f604083850312156114b3575f5ffd5b6114bc836113c3565b946020939093013593505050565b5f602082840312156114da575f5ffd5b6114e3826113c3565b9392505050565b5f5f5f5f608085870312156114fd575f5ffd5b611506856113c3565b966020860135965060408601359560600135945092505050565b5f5f60408385031215611531575f5ffd5b61153a836113c3565b91506020830135801515811461154e575f5ffd5b809150509250929050565b6020808252600890820152670616d6f756e7420360c41b604082015260600190565b5f6020828403121561158b575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156115b9576115b9611592565b92915050565b808201808211156115b9576115b9611592565b6001600160a01b03938416815291909216602082015260408101919091526060019056fea26469706673582212203f0f685bb6676e712eeb3e2e5d5dbbc9e484b630fd65bd2f4b9a131bf2fd5a2d64736f6c634300081c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b88339cb7199b77e23db6e890353e22632ba630f
-----Decoded View---------------
Arg [0] : tokenAddress (address): 0xb88339CB7199b77E23DB6E890353E22632Ba630f
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000b88339cb7199b77e23db6e890353e22632ba630f
Deployed Bytecode Sourcemap
27882:6159:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32365:712;;;;;;:::i;:::-;;:::i;:::-;;30626:1034;;;;;;:::i;:::-;;:::i;29349:124::-;;;;;;:::i;:::-;;:::i;29479:513::-;;;;;;:::i;:::-;;:::i;29998:292::-;;;;;;:::i;:::-;;:::i;3325:103::-;;;:::i;33083:98::-;;;;;;:::i;:::-;-1:-1:-1;;;;;33161:14:0;33138:7;33161:14;;;:8;:14;;;;;;;33083:98;;;;2370:25:1;;;2358:2;2343:18;33083:98:0;;;;;;;;28017:38;;;;;2650:87;2696:7;2723:6;-1:-1:-1;;;;;2723:6:0;2650:87;;;-1:-1:-1;;;;;2570:32:1;;;2552:51;;2540:2;2525:18;2650:87:0;2406:203:1;30296:324:0;;;;;;:::i;:::-;;:::i;31666:693::-;;;;;;:::i;:::-;;:::i;33282:204::-;;;;;;:::i;:::-;;:::i;33187:89::-;33257:13;;33187:89;;29247:96;;;;;;:::i;:::-;;:::i;28199:45::-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;28199:45:0;;;28249:28;;;;;;;;;;;;3686:6:1;3674:19;;;3656:38;;3644:2;3629:18;28249:28:0;3512:188:1;3583:220:0;;;;;;:::i;:::-;;:::i;28282:41::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3870:14:1;;3863:22;3845:41;;3833:2;3818:18;28282:41:0;3705:187:1;27975:37:0;;;;;32365:712;2536:13;:11;:13::i;:::-;-1:-1:-1;;;;;32495:16:0;::::1;32487:46;;;::::0;-1:-1:-1;;;32487:46:0;;4329:2:1;32487:46:0::1;::::0;::::1;4311:21:1::0;4368:2;4348:18;;;4341:30;-1:-1:-1;;;4387:18:1;;;4380:47;4444:18;;32487:46:0::1;;;;;;;;;32557:1;32548:6;:10;32540:31;;;;-1:-1:-1::0;;;32540:31:0::1;;;;;;;:::i;:::-;32678:40;::::0;-1:-1:-1;;;32678:40:0;;32712:4:::1;32678:40;::::0;::::1;2552:51:1::0;32640:12:0;;32608:22:::1;::::0;-1:-1:-1;;;;;32678:25:0;::::1;::::0;::::1;::::0;2525:18:1;;32678:40:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32660:58;;32744:6;32733:7;:17;;32725:48;;;::::0;-1:-1:-1;;;32725:48:0;;5200:2:1;32725:48:0::1;::::0;::::1;5182:21:1::0;5239:2;5219:18;;;5212:30;-1:-1:-1;;;5258:18:1;;;5251:48;5316:18;;32725:48:0::1;4998:342:1::0;32725:48:0::1;32810:5;-1:-1:-1::0;;;;;32786:30:0::1;:12;-1:-1:-1::0;;;;;32786:30:0::1;::::0;32782:230:::1;;32846:13;;32835:7;:24;;32827:53;;;::::0;-1:-1:-1;;;32827:53:0;;5547:2:1;32827:53:0::1;::::0;::::1;5529:21:1::0;5586:2;5566:18;;;5559:30;-1:-1:-1;;;5605:18:1;;;5598:46;5661:18;;32827:53:0::1;5345:340:1::0;32827:53:0::1;32889:20;32922:13;;32912:7;:23;;;;:::i;:::-;32889:46;;32962:12;32952:6;:22;;32944:60;;;::::0;-1:-1:-1;;;32944:60:0;;6157:2:1;32944:60:0::1;::::0;::::1;6139:21:1::0;6196:2;6176:18;;;6169:30;6235:27;6215:18;;;6208:55;6280:18;;32944:60:0::1;5955:349:1::0;32944:60:0::1;32818:194;32782:230;33020:51;33043:15;33060:2;33064:6;33020:22;:51::i;:::-;32480:597;;32365:712:::0;;;:::o;30626:1034::-;30782:10;30772:21;;;;:9;:21;;;;;;;;30764:53;;;;-1:-1:-1;;;30764:53:0;;6511:2:1;30764:53:0;;;6493:21:1;6550:2;6530:18;;;6523:30;-1:-1:-1;;;6569:18:1;;;6562:49;6628:18;;30764:53:0;6309:343:1;30764:53:0;-1:-1:-1;;;;;30832:20:0;;;;;;:43;;-1:-1:-1;;;;;;30856:19:0;;;;30832:43;30824:73;;;;-1:-1:-1;;;30824:73:0;;6859:2:1;30824:73:0;;;6841:21:1;6898:2;6878:18;;;6871:30;-1:-1:-1;;;6917:18:1;;;6910:47;6974:18;;30824:73:0;6657:341:1;30824:73:0;-1:-1:-1;;;;;30912:23:0;;;;;;:15;:23;;;;;;:35;-1:-1:-1;30912:35:0;;;:73;;-1:-1:-1;;;;;;30951:22:0;;;;;;:15;:22;;;;;;:34;-1:-1:-1;30951:34:0;30912:73;30904:107;;;;-1:-1:-1;;;30904:107:0;;7205:2:1;30904:107:0;;;7187:21:1;7244:2;7224:18;;;7217:30;-1:-1:-1;;;7263:18:1;;;7256:51;7324:18;;30904:107:0;7003:345:1;30904:107:0;-1:-1:-1;;;;;31026:15:0;;;;;;:8;:15;;;;;;:27;-1:-1:-1;31026:27:0;31018:65;;;;-1:-1:-1;;;31018:65:0;;7555:2:1;31018:65:0;;;7537:21:1;7594:2;7574:18;;;7567:30;7633:27;7613:18;;;7606:55;7678:18;;31018:65:0;7353:349:1;31018:65:0;-1:-1:-1;;;;;31092:23:0;;;;;;:15;:23;;;;;:35;;31119:8;;31092:23;:35;;31119:8;;31092:35;:::i;:::-;;;;-1:-1:-1;;;;;;;31134:22:0;;;;;;:15;:22;;;;;:34;;31160:8;;31134:22;:34;;31160:8;;31134:34;:::i;:::-;;;;-1:-1:-1;31196:17:0;;-1:-1:-1;31205:8:0;31196:6;:17;:::i;:::-;-1:-1:-1;;;;;31175:16:0;;;;;;:8;:16;;;;;:39;;:16;;;:39;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;31221:15:0;;;;;;:8;:15;;;;;:27;;31240:8;;31221:15;:27;;31240:8;;31221:27;:::i;:::-;;;;-1:-1:-1;;;;;;;31261:18:0;;;31291:1;31261:18;;;:10;:18;;;;;;;:32;31257:175;;-1:-1:-1;;;;;31313:18:0;;;31304:28;31313:18;;;:10;:18;;;;;;;;;;;;31304:28;;:8;:28;;;;;:43;;31336:11;;31304:28;:43;;31336:11;;31304:43;:::i;:::-;;;;-1:-1:-1;;;;;;;31384:18:0;;;;;;;:10;:18;;;;;;;;31361:63;;;;;;31384:18;;31395:6;;31412:11;;31361:63;:::i;:::-;;;;;;;;31257:175;-1:-1:-1;;;;;31442:17:0;;;31471:1;31442:17;;;:10;:17;;;;;;;:31;31438:171;;-1:-1:-1;;;;;31493:17:0;;;31484:27;31493:17;;;:10;:17;;;;;;;;;;;;31484:27;;:8;:27;;;;;:42;;31515:11;;31484:27;:42;;31515:11;;31484:42;:::i;:::-;;;;-1:-1:-1;;;;;;;31563:17:0;;;;;;;:10;:17;;;;;;;;31540:61;;;;;;31563:17;;31574:5;;31589:11;;31540:61;:::i;:::-;;;;;;;;31438:171;31620:34;31632:6;31640:5;31647:6;31620:34;;;;;;;;:::i;:::-;;;;;;;;30626:1034;;;;;:::o;29349:124::-;26823:21;:19;:21::i;:::-;29441:26:::1;29450:6;29458:8;29441;:26::i;:::-;26867:20:::0;26158:1;27409:21;;27226:212;26867:20;29349:124;;:::o;29479:513::-;26823:21;:19;:21::i;:::-;29559:1:::1;29550:6;:10;29542:31;;;;-1:-1:-1::0;;;29542:31:0::1;;;;;;;:::i;:::-;29580:13;29596:22;29605:13;29596:6:::0;:22:::1;:::i;:::-;29655:10;29625:18;29646:20:::0;;;:8:::1;:20;::::0;;;;;;;;29700:15:::1;:27:::0;;;;;;;29580:38;;-1:-1:-1;29646:20:0;29580:38;29743:29:::1;29700:27:::0;29646:20;29743:29:::1;:::i;:::-;29742:40;;29734:72;;;::::0;-1:-1:-1;;;29734:72:0;;8415:2:1;29734:72:0::1;::::0;::::1;8397:21:1::0;8454:2;8434:18;;;8427:30;-1:-1:-1;;;8473:18:1;;;8466:49;8532:18;;29734:72:0::1;8213:343:1::0;29734:72:0::1;29838:18;29851:5:::0;29838:10;:18:::1;:::i;:::-;29824:10;29815:20;::::0;;;:8:::1;:20;::::0;;;;:41;;;;29863:13:::1;:22:::0;;29880:5;;29815:20;29863:22:::1;::::0;29880:5;;29863:22:::1;:::i;:::-;::::0;;;-1:-1:-1;29892:38:0::1;::::0;-1:-1:-1;;;;;;29892:5:0::1;:18;29911:10;29923:6:::0;29892:18:::1;:38::i;:::-;29942:44;::::0;;8735:25:1;;;29972:13:0::1;8791:2:1::0;8776:18;;8769:34;29952:10:0::1;::::0;29942:44:::1;::::0;8708:18:1;29942:44:0::1;;;;;;;29535:457;;;26867:20:::0;26158:1;27409:21;;27226:212;26867:20;29479:513;:::o;29998:292::-;26823:21;:19;:21::i;:::-;30091:10:::1;-1:-1:-1::0;;;;;30091:20:0;::::1;;30083:62;;;::::0;-1:-1:-1;;;30083:62:0;;9016:2:1;30083:62:0::1;::::0;::::1;8998:21:1::0;9055:2;9035:18;;;9028:30;9094:31;9074:18;;;9067:59;9143:18;;30083:62:0::1;8814:353:1::0;30083:62:0::1;-1:-1:-1::0;;;;;30170:16:0;::::1;;::::0;;;:8:::1;:16;::::0;;;;;30160:26;::::1;;30152:58;;;::::0;-1:-1:-1;;;30152:58:0;;8415:2:1;30152:58:0::1;::::0;::::1;8397:21:1::0;8454:2;8434:18;;;8427:30;-1:-1:-1;;;8473:18:1;;;8466:49;8532:18;;30152:58:0::1;8213:343:1::0;30152:58:0::1;-1:-1:-1::0;;;;;30217:23:0;::::1;;::::0;;;:15:::1;:23;::::0;;;;:33;;30244:6;;30217:23;:33:::1;::::0;30244:6;;30217:33:::1;:::i;:::-;::::0;;;-1:-1:-1;;30262:22:0::1;::::0;2370:25:1;;;-1:-1:-1;;;;;30262:22:0;::::1;::::0;::::1;::::0;2358:2:1;2343:18;30262:22:0::1;;;;;;;;26867:20:::0;26158:1;27409:21;;27226:212;3325:103;2536:13;:11;:13::i;:::-;3390:30:::1;3417:1;3390:18;:30::i;:::-;3325:103::o:0;30296:324::-;26823:21;:19;:21::i;:::-;30399:10:::1;30389:21;::::0;;;:9:::1;:21;::::0;;;;;::::1;;::::0;:46:::1;;-1:-1:-1::0;2696:7:0;2723:6;-1:-1:-1;;;;;2723:6:0;30414:10:::1;:21;30389:46;30381:78;;;::::0;-1:-1:-1;;;30381:78:0;;9374:2:1;30381:78:0::1;::::0;::::1;9356:21:1::0;9413:2;9393:18;;;9386:30;-1:-1:-1;;;9432:18:1;;;9425:49;9491:18;;30381:78:0::1;9172:343:1::0;30381:78:0::1;-1:-1:-1::0;;;;;30484:23:0;::::1;;::::0;;;:15:::1;:23;::::0;;;;;30474:33;::::1;;30466:72;;;::::0;-1:-1:-1;;;30466:72:0;;9722:2:1;30466:72:0::1;::::0;::::1;9704:21:1::0;9761:2;9741:18;;;9734:30;9800:28;9780:18;;;9773:56;9846:18;;30466:72:0::1;9520:350:1::0;30466:72:0::1;-1:-1:-1::0;;;;;30545:23:0;::::1;;::::0;;;:15:::1;:23;::::0;;;;:33;;30572:6;;30545:23;:33:::1;::::0;30572:6;;30545:33:::1;:::i;:::-;::::0;;;-1:-1:-1;;30590:24:0::1;::::0;2370:25:1;;;-1:-1:-1;;;;;30590:24:0;::::1;::::0;::::1;::::0;2358:2:1;2343:18;30590:24:0::1;2224:177:1::0;31666:693:0;31817:10;31807:21;;;;:9;:21;;;;;;;;31799:53;;;;-1:-1:-1;;;31799:53:0;;6511:2:1;31799:53:0;;;6493:21:1;6550:2;6530:18;;;6523:30;-1:-1:-1;;;6569:18:1;;;6562:49;6628:18;;31799:53:0;6309:343:1;31799:53:0;-1:-1:-1;;;;;31867:23:0;;31859:53;;;;-1:-1:-1;;;31859:53:0;;4329:2:1;31859:53:0;;;4311:21:1;4368:2;4348:18;;;4341:30;-1:-1:-1;;;4387:18:1;;;4380:47;4444:18;;31859:53:0;4127:341:1;31859:53:0;-1:-1:-1;;;;;31927:26:0;;;;;;:15;:26;;;;;;:43;-1:-1:-1;31927:43:0;31919:73;;;;-1:-1:-1;;;31919:73:0;;10077:2:1;31919:73:0;;;10059:21:1;10116:2;10096:18;;;10089:30;-1:-1:-1;;;10135:18:1;;;10128:47;10192:18;;31919:73:0;9875:341:1;31919:73:0;-1:-1:-1;;;;;31999:26:0;;;;;;:15;:26;;;;;:43;;32029:13;;31999:26;:43;;32029:13;;31999:43;:::i;:::-;;;;-1:-1:-1;32073:22:0;;-1:-1:-1;32082:13:0;32073:6;:22;:::i;:::-;-1:-1:-1;;;;;32049:19:0;;;;;;:8;:19;;;;;:47;;:19;;;:47;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;32107:21:0;;;32140:1;32107:21;;;:10;:21;;;;;;;:35;32103:187;;-1:-1:-1;;;;;32162:21:0;;;32153:31;32162:21;;;:10;:21;;;;;;;;;;;;32153:31;;:8;:31;;;;;:46;;32188:11;;32153:31;:46;;32188:11;;32153:46;:::i;:::-;;;;-1:-1:-1;;;;;;;32236:21:0;;;;;;;:10;:21;;;;;;;;32213:69;;;;;;32236:21;;32247:9;;32270:11;;32213:69;:::i;:::-;;;;;;;;32103:187;32301:52;;;-1:-1:-1;;;;;10441:32:1;;10423:51;;10505:2;10490:18;;10483:34;;;10533:18;;;10526:34;;;32301:52:0;;10411:2:1;10396:18;32301:52:0;;;;;;;31666:693;;;;:::o;33282:204::-;2536:13;:11;:13::i;:::-;-1:-1:-1;;;;;33367:21:0;::::1;33359:46;;;::::0;-1:-1:-1;;;33359:46:0;;10773:2:1;33359:46:0::1;::::0;::::1;10755:21:1::0;10812:2;10792:18;;;10785:30;-1:-1:-1;;;10831:18:1;;;10824:42;10883:18;;33359:46:0::1;10571:336:1::0;33359:46:0::1;-1:-1:-1::0;;;;;33412:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;;;;;:28;;-1:-1:-1;;33412:28:0::1;::::0;::::1;;::::0;;::::1;::::0;;;33452;;3845:41:1;;;33452:28:0::1;::::0;3818:18:1;33452:28:0::1;;;;;;;;33282:204:::0;;:::o;29247:96::-;26823:21;:19;:21::i;:::-;29309:28:::1;29318:6;29334:1;29309:8;:28::i;:::-;26867:20:::0;26158:1;27409:21;;27226:212;3583:220;2536:13;:11;:13::i;:::-;-1:-1:-1;;;;;3668:22:0;::::1;3664:93;;3714:31;::::0;-1:-1:-1;;;3714:31:0;;3742:1:::1;3714:31;::::0;::::1;2552:51:1::0;2525:18;;3714:31:0::1;2406:203:1::0;3664:93:0::1;3767:28;3786:8;3767:18;:28::i;2815:166::-:0;2696:7;2723:6;-1:-1:-1;;;;;2723:6:0;681:10;2875:23;2871:103;;2922:40;;-1:-1:-1;;;2922:40:0;;681:10;2922:40;;;2552:51:1;2525:18;;2922:40:0;2406:203:1;15136:162:0;15246:43;;-1:-1:-1;;;;;11104:32:1;;;15246:43:0;;;11086:51:1;11153:18;;;11146:34;;;15219:71:0;;15239:5;;15261:14;;;;;11059:18:1;;15246:43:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15246:43:0;;;;;;;;;;;15219:19;:71::i;:::-;15136:162;;;:::o;26903:315::-;26201:1;27032:7;;:18;27028:88;;27074:30;;-1:-1:-1;;;27074:30:0;;;;;;;;;;;27028:88;26201:1;27193:7;:17;26903:315::o;33553:485::-;33638:1;33629:6;:10;33621:31;;;;-1:-1:-1;;;33621:31:0;;;;;;;:::i;:::-;33659:57;-1:-1:-1;;;;;33659:5:0;:22;33682:10;33702:4;33709:6;33659:22;:57::i;:::-;33732:10;33723:20;;;;:8;:20;;;;;:30;;33747:6;;33723:20;:30;;33747:6;;33723:30;:::i;:::-;;;;;;;;33777:6;33760:13;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;33796:22:0;;;;;;:48;;-1:-1:-1;;;;;;33822:22:0;;33834:10;33822:22;;33796:48;:88;;;;-1:-1:-1;33859:10:0;33882:1;33848:22;;;:10;:22;;;;;;-1:-1:-1;;;;;33848:22:0;:36;33796:88;33792:198;;;33906:10;33895:22;;;;:10;:22;;;;;;:33;;-1:-1:-1;;;;;;33895:33:0;-1:-1:-1;;;;;33895:33:0;;;;;;;;33942:40;;33895:33;;33906:10;33942:40;;;33792:198;34003:29;;2370:25:1;;;34013:10:0;;34003:29;;2358:2:1;2343:18;34003:29:0;2224:177:1;3963:191:0;4037:16;4056:6;;-1:-1:-1;;;;;4073:17:0;;;-1:-1:-1;;;;;;4073:17:0;;;;;;4106:40;;4056:6;;;;;;;4106:40;;4037:16;4106:40;4026:128;3963:191;:::o;22427:738::-;22508:18;22537:19;22677:4;22674:1;22667:4;22661:11;22654:4;22648;22644:15;22641:1;22634:5;22627;22622:60;22736:7;22726:180;;22781:4;22775:11;22827:16;22824:1;22819:3;22804:40;22874:16;22869:3;22862:29;22726:180;-1:-1:-1;;22985:1:0;22979:8;22934:16;;-1:-1:-1;23014:15:0;;:68;;23066:11;23081:1;23066:16;;23014:68;;;-1:-1:-1;;;;;23032:26:0;;;:31;23014:68;23010:148;;;23106:40;;-1:-1:-1;;;23106:40:0;;-1:-1:-1;;;;;2570:32:1;;23106:40:0;;;2552:51:1;2525:18;;23106:40:0;2406:203:1;23010:148:0;22497:668;;22427:738;;:::o;15543:190::-;15644:81;15664:5;15686;-1:-1:-1;;;;;15686:18:0;;15707:4;15713:2;15717:5;15671:53;;;;;;;;;;:::i;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:374::-;269:6;277;285;338:2;326:9;317:7;313:23;309:32;306:52;;;354:1;351;344:12;306:52;377:29;396:9;377:29;:::i;:::-;367:39;;425:38;459:2;448:9;444:18;425:38;:::i;:::-;192:374;;415:48;;-1:-1:-1;;;532:2:1;517:18;;;;504:32;;192:374::o;571:616::-;666:6;674;682;690;698;751:3;739:9;730:7;726:23;722:33;719:53;;;768:1;765;758:12;719:53;791:29;810:9;791:29;:::i;:::-;781:39;;839:38;873:2;862:9;858:18;839:38;:::i;:::-;571:616;;829:48;;-1:-1:-1;;;;946:2:1;931:18;;918:32;;1047:2;1032:18;;1019:32;;1150:3;1135:19;;;1122:33;;-1:-1:-1;571:616:1:o;1192:300::-;1260:6;1268;1321:2;1309:9;1300:7;1296:23;1292:32;1289:52;;;1337:1;1334;1327:12;1289:52;1382:23;;;-1:-1:-1;1448:38:1;1482:2;1467:18;;1448:38;:::i;:::-;1438:48;;1192:300;;;;;:::o;1497:226::-;1556:6;1609:2;1597:9;1588:7;1584:23;1580:32;1577:52;;;1625:1;1622;1615:12;1577:52;-1:-1:-1;1670:23:1;;1497:226;-1:-1:-1;1497:226:1:o;1728:300::-;1796:6;1804;1857:2;1845:9;1836:7;1832:23;1828:32;1825:52;;;1873:1;1870;1863:12;1825:52;1896:29;1915:9;1896:29;:::i;:::-;1886:39;1994:2;1979:18;;;;1966:32;;-1:-1:-1;;;1728:300:1:o;2033:186::-;2092:6;2145:2;2133:9;2124:7;2120:23;2116:32;2113:52;;;2161:1;2158;2151:12;2113:52;2184:29;2203:9;2184:29;:::i;:::-;2174:39;2033:186;-1:-1:-1;;;2033:186:1:o;2614:541::-;2700:6;2708;2716;2724;2777:3;2765:9;2756:7;2752:23;2748:33;2745:53;;;2794:1;2791;2784:12;2745:53;2817:29;2836:9;2817:29;:::i;:::-;2807:39;2915:2;2900:18;;2887:32;;-1:-1:-1;3016:2:1;3001:18;;2988:32;;3119:2;3104:18;3091:32;;-1:-1:-1;2614:541:1;-1:-1:-1;;;2614:541:1:o;3160:347::-;3225:6;3233;3286:2;3274:9;3265:7;3261:23;3257:32;3254:52;;;3302:1;3299;3292:12;3254:52;3325:29;3344:9;3325:29;:::i;:::-;3315:39;;3404:2;3393:9;3389:18;3376:32;3451:5;3444:13;3437:21;3430:5;3427:32;3417:60;;3473:1;3470;3463:12;3417:60;3496:5;3486:15;;;3160:347;;;;;:::o;4473:331::-;4675:2;4657:21;;;4714:1;4694:18;;;4687:29;-1:-1:-1;;;4747:2:1;4732:18;;4725:38;4795:2;4780:18;;4473:331::o;4809:184::-;4879:6;4932:2;4920:9;4911:7;4907:23;4903:32;4900:52;;;4948:1;4945;4938:12;4900:52;-1:-1:-1;4971:16:1;;4809:184;-1:-1:-1;4809:184:1:o;5690:127::-;5751:10;5746:3;5742:20;5739:1;5732:31;5782:4;5779:1;5772:15;5806:4;5803:1;5796:15;5822:128;5889:9;;;5910:11;;;5907:37;;;5924:18;;:::i;:::-;5822:128;;;;:::o;7707:125::-;7772:9;;;7793:10;;;7790:36;;;7806:18;;:::i;7837:371::-;-1:-1:-1;;;;;8057:32:1;;;8039:51;;8126:32;;;;8121:2;8106:18;;8099:60;8190:2;8175:18;;8168:34;;;;8027:2;8012:18;;7837:371::o
Swarm Source
ipfs://3f0f685bb6676e712eeb3e2e5d5dbbc9e484b630fd65bd2f4b9a131bf2fd5a2d
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in HYPE
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.