Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 13 from a total of 13 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Distribute Nativ... | 21938856 | 2 days ago | IN | 0.89325543 ETH | 0.00005129 | ||||
Distribute Nativ... | 21938848 | 2 days ago | IN | 0.89217336 ETH | 0.0000532 | ||||
Distribute ERC20 | 21873820 | 11 days ago | IN | 0 ETH | 0.00008718 | ||||
Distribute ERC20 | 21866528 | 12 days ago | IN | 0 ETH | 0.00058979 | ||||
Distribute Nativ... | 21817210 | 19 days ago | IN | 6.2890349 ETH | 0.00005486 | ||||
Distribute ERC20 | 21744793 | 29 days ago | IN | 0 ETH | 0.00058005 | ||||
Distribute ERC20 | 21738993 | 29 days ago | IN | 0 ETH | 0.00070203 | ||||
Distribute ERC20 | 21673300 | 39 days ago | IN | 0 ETH | 0.0014712 | ||||
Distribute Nativ... | 21580992 | 52 days ago | IN | 0.03211883 ETH | 0.0004926 | ||||
Distribute Nativ... | 21436243 | 72 days ago | IN | 5.20386829 ETH | 0.00069847 | ||||
Distribute Nativ... | 21294192 | 92 days ago | IN | 16.08180305 ETH | 0.0009963 | ||||
Distribute Nativ... | 21294032 | 92 days ago | IN | 0.03003659 ETH | 0.00128172 | ||||
Update Fee Addre... | 20691495 | 176 days ago | IN | 0 ETH | 0.00008927 |
Latest 14 internal transactions
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
21938856 | 2 days ago | 0.87036622 ETH | ||||
21938856 | 2 days ago | 0.02288921 ETH | ||||
21938848 | 2 days ago | 0.86931188 ETH | ||||
21938848 | 2 days ago | 0.02286148 ETH | ||||
21817210 | 19 days ago | 6.16629442 ETH | ||||
21817210 | 19 days ago | 0.12274048 ETH | ||||
21580992 | 52 days ago | 0.03118333 ETH | ||||
21580992 | 52 days ago | 0.0009355 ETH | ||||
21436243 | 72 days ago | 5.10530749 ETH | ||||
21436243 | 72 days ago | 0.0985608 ETH | ||||
21294192 | 92 days ago | 15.90651248 ETH | ||||
21294192 | 92 days ago | 0.17529057 ETH | ||||
21294032 | 92 days ago | 0.02916174 ETH | ||||
21294032 | 92 days ago | 0.00087485 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
LyziPay
Compiler Version
v0.8.24+commit.e11b9ed9
Optimization Enabled:
No with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.24; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/access/AccessControl.sol"; import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; contract LyziPay is ReentrancyGuard, AccessControl { bytes32 public constant ADMIN_ROLE = keccak256("ADMIN_ROLE"); address public feeAddress; event NativeDistributed(address indexed recipient, address indexed feeAddress, uint256 amountToRecipient, uint256 fees); event ERC20Distributed(address indexed token, address indexed recipient, uint256 fees, uint256 amountToRecipient); event FeeAddressUpdated(address indexed oldAddress, address indexed newAddress); event Withdrawn(address indexed admin, uint256 amount); event ERC20Withdrawn(address indexed token, address indexed admin, uint256 amount); constructor(address _feeAddress) { feeAddress = _feeAddress; _grantRole(DEFAULT_ADMIN_ROLE, msg.sender); _grantRole(ADMIN_ROLE, msg.sender); } function distributeNative(address recipient, uint256 fees) nonReentrant external payable { require(msg.value > 0, "Must send native to distribute"); require(fees <= (msg.value / 10), "Fees cannot be greater than 10% of the amount"); uint256 amountToRecipient = msg.value - fees; (bool success1, ) = feeAddress.call{value: fees}(""); require(success1, "Transfer to stored address failed"); (bool success2, ) = recipient.call{value: amountToRecipient}(""); require(success2, "Transfer to recipient address failed"); emit NativeDistributed(recipient, feeAddress, amountToRecipient, fees); } function distributeERC20(address tokenAddress, address recipient, uint256 amount, uint256 fees) nonReentrant external { require(fees <= (amount / 10), "Fees cannot be greater than 10% of the amount"); IERC20 token = IERC20(tokenAddress); uint256 amountToRecipient = amount - fees; require(token.transferFrom(msg.sender, feeAddress, fees), "Transfer to stored address failed"); require(token.transferFrom(msg.sender, recipient, amountToRecipient), "Transfer to recipient address failed"); emit ERC20Distributed(tokenAddress, recipient, fees, amountToRecipient); } function updateFeeAddress(address newAddress) external onlyRole(ADMIN_ROLE) { address oldAddress = feeAddress; feeAddress = newAddress; emit FeeAddressUpdated(oldAddress, newAddress); } function withdraw() external nonReentrant onlyRole(ADMIN_ROLE) { uint256 balance = address(this).balance; require(balance > 0, "No funds to withdraw"); (bool success, ) = msg.sender.call{value: balance}(""); require(success, "Withdraw failed"); emit Withdrawn(msg.sender, balance); } function withdrawERC20(address tokenAddress) external nonReentrant onlyRole(ADMIN_ROLE) { require(tokenAddress != address(0), "Invalid token address"); IERC20 token = IERC20(tokenAddress); uint256 balance = token.balanceOf(address(this)); require(balance > 0, "No tokens to withdraw"); require(token.transfer(msg.sender, balance), "Withdraw ERC20 failed"); emit ERC20Withdrawn(tokenAddress, msg.sender, balance); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (access/AccessControl.sol) pragma solidity ^0.8.20; import {IAccessControl} from "./IAccessControl.sol"; import {Context} from "../utils/Context.sol"; import {ERC165} from "../utils/introspection/ERC165.sol"; /** * @dev Contract module that allows children to implement role-based access * control mechanisms. This is a lightweight version that doesn't allow enumerating role * members except through off-chain means by accessing the contract event logs. Some * applications may benefit from on-chain enumerability, for those cases see * {AccessControlEnumerable}. * * Roles are referred to by their `bytes32` identifier. These should be exposed * in the external API and be unique. The best way to achieve this is by * using `public constant` hash digests: * * ```solidity * bytes32 public constant MY_ROLE = keccak256("MY_ROLE"); * ``` * * Roles can be used to represent a set of permissions. To restrict access to a * function call, use {hasRole}: * * ```solidity * function foo() public { * require(hasRole(MY_ROLE, msg.sender)); * ... * } * ``` * * Roles can be granted and revoked dynamically via the {grantRole} and * {revokeRole} functions. Each role has an associated admin role, and only * accounts that have a role's admin role can call {grantRole} and {revokeRole}. * * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means * that only accounts with this role will be able to grant or revoke other * roles. More complex role relationships can be created by using * {_setRoleAdmin}. * * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to * grant and revoke this role. Extra precautions should be taken to secure * accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules} * to enforce additional security measures for this role. */ abstract contract AccessControl is Context, IAccessControl, ERC165 { struct RoleData { mapping(address account => bool) hasRole; bytes32 adminRole; } mapping(bytes32 role => RoleData) private _roles; bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; /** * @dev Modifier that checks that an account has a specific role. Reverts * with an {AccessControlUnauthorizedAccount} error including the required role. */ modifier onlyRole(bytes32 role) { _checkRole(role); _; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId); } /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) public view virtual returns (bool) { return _roles[role].hasRole[account]; } /** * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()` * is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier. */ function _checkRole(bytes32 role) internal view virtual { _checkRole(role, _msgSender()); } /** * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account` * is missing `role`. */ function _checkRole(bytes32 role, address account) internal view virtual { if (!hasRole(role, account)) { revert AccessControlUnauthorizedAccount(account, role); } } /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) public view virtual returns (bytes32) { return _roles[role].adminRole; } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. * * May emit a {RoleGranted} event. */ function grantRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) { _grantRole(role, account); } /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. * * May emit a {RoleRevoked} event. */ function revokeRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) { _revokeRole(role, account); } /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been revoked `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `callerConfirmation`. * * May emit a {RoleRevoked} event. */ function renounceRole(bytes32 role, address callerConfirmation) public virtual { if (callerConfirmation != _msgSender()) { revert AccessControlBadConfirmation(); } _revokeRole(role, callerConfirmation); } /** * @dev Sets `adminRole` as ``role``'s admin role. * * Emits a {RoleAdminChanged} event. */ function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual { bytes32 previousAdminRole = getRoleAdmin(role); _roles[role].adminRole = adminRole; emit RoleAdminChanged(role, previousAdminRole, adminRole); } /** * @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted. * * Internal function without access restriction. * * May emit a {RoleGranted} event. */ function _grantRole(bytes32 role, address account) internal virtual returns (bool) { if (!hasRole(role, account)) { _roles[role].hasRole[account] = true; emit RoleGranted(role, account, _msgSender()); return true; } else { return false; } } /** * @dev Attempts to revoke `role` to `account` and returns a boolean indicating if `role` was revoked. * * Internal function without access restriction. * * May emit a {RoleRevoked} event. */ function _revokeRole(bytes32 role, address account) internal virtual returns (bool) { if (hasRole(role, account)) { _roles[role].hasRole[account] = false; emit RoleRevoked(role, account, _msgSender()); return true; } else { return false; } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (access/IAccessControl.sol) pragma solidity ^0.8.20; /** * @dev External interface of AccessControl declared to support ERC165 detection. */ interface IAccessControl { /** * @dev The `account` is missing a role. */ error AccessControlUnauthorizedAccount(address account, bytes32 neededRole); /** * @dev The caller of a function is not the expected one. * * NOTE: Don't confuse with {AccessControlUnauthorizedAccount}. */ error AccessControlBadConfirmation(); /** * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` * * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite * {RoleAdminChanged} not being emitted signaling this. */ event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole); /** * @dev Emitted when `account` is granted `role`. * * `sender` is the account that originated the contract call, an admin role * bearer except when using {AccessControl-_setupRole}. */ event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Emitted when `account` is revoked `role`. * * `sender` is the account that originated the contract call: * - if using `revokeRole`, it is the admin role bearer * - if using `renounceRole`, it is the role bearer (i.e. `account`) */ event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) external view returns (bool); /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {AccessControl-_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) external view returns (bytes32); /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function grantRole(bytes32 role, address account) external; /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function revokeRole(bytes32 role, address account) external; /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been granted `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `callerConfirmation`. */ function renounceRole(bytes32 role, address callerConfirmation) external; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.20; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ 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); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; /** * @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; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/ERC165.sol) pragma solidity ^0.8.20; import {IERC165} from "./IERC165.sol"; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) { return interfaceId == type(IERC165).interfaceId; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/IERC165.sol) pragma solidity ^0.8.20; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * 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[EIP 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); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (utils/ReentrancyGuard.sol) pragma solidity ^0.8.20; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant NOT_ENTERED = 1; uint256 private constant ENTERED = 2; uint256 private _status; /** * @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; } }
{ "evmVersion": "paris", "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_feeAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"fees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToRecipient","type":"uint256"}],"name":"ERC20Distributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"admin","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ERC20Withdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"},{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"FeeAddressUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":true,"internalType":"address","name":"feeAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountToRecipient","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fees","type":"uint256"}],"name":"NativeDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"fees","type":"uint256"}],"name":"distributeERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"fees","type":"uint256"}],"name":"distributeNative","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"feeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateFeeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"withdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162001fc138038062001fc18339818101604052810190620000379190620002b0565b600160008190555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620000956000801b33620000d060201b60201c565b50620000c87fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177533620000d060201b60201c565b5050620002e2565b6000620000e48383620001d360201b60201c565b620001c857600180600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620001646200023e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050620001cd565b600090505b92915050565b60006001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000278826200024b565b9050919050565b6200028a816200026b565b81146200029657600080fd5b50565b600081519050620002aa816200027f565b92915050565b600060208284031215620002c957620002c862000246565b5b6000620002d98482850162000299565b91505092915050565b611ccf80620002f26000396000f3fe6080604052600436106100dd5760003560e01c806375b238fc1161007f578063bbcaac3811610059578063bbcaac38146102ac578063cc8e98f5146102d5578063d547741f146102f1578063f4f3b2001461031a576100dd565b806375b238fc1461021957806391d1485414610244578063a217fddf14610281576100dd565b80632f2ff15d116100bb5780632f2ff15d1461018557806336568abe146101ae5780633ccfd60b146101d757806341275358146101ee576100dd565b806301ffc9a7146100e2578063100500a41461011f578063248a9ca314610148575b600080fd5b3480156100ee57600080fd5b5061010960048036038101906101049190611308565b610343565b6040516101169190611350565b60405180910390f35b34801561012b57600080fd5b50610146600480360381019061014191906113ff565b6103bd565b005b34801561015457600080fd5b5061016f600480360381019061016a919061149c565b610640565b60405161017c91906114d8565b60405180910390f35b34801561019157600080fd5b506101ac60048036038101906101a791906114f3565b610660565b005b3480156101ba57600080fd5b506101d560048036038101906101d091906114f3565b610682565b005b3480156101e357600080fd5b506101ec6106fd565b005b3480156101fa57600080fd5b5061020361087e565b6040516102109190611542565b60405180910390f35b34801561022557600080fd5b5061022e6108a4565b60405161023b91906114d8565b60405180910390f35b34801561025057600080fd5b5061026b600480360381019061026691906114f3565b6108c8565b6040516102789190611350565b60405180910390f35b34801561028d57600080fd5b50610296610933565b6040516102a391906114d8565b60405180910390f35b3480156102b857600080fd5b506102d360048036038101906102ce919061155d565b61093a565b005b6102ef60048036038101906102ea919061158a565b610a2b565b005b3480156102fd57600080fd5b50610318600480360381019061031391906114f3565b610ce7565b005b34801561032657600080fd5b50610341600480360381019061033c919061155d565b610d09565b005b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103b657506103b582610fa0565b5b9050919050565b6103c561100a565b600a826103d29190611628565b811115610414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040b906116dc565b60405180910390fd5b60008490506000828461042791906116fc565b90508173ffffffffffffffffffffffffffffffffffffffff166323b872dd33600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518463ffffffff1660e01b81526004016104889392919061173f565b6020604051808303816000875af11580156104a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cb91906117a2565b61050a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050190611841565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3387846040518463ffffffff1660e01b81526004016105479392919061173f565b6020604051808303816000875af1158015610566573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058a91906117a2565b6105c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c0906118d3565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fd514f0034d93d5ff256ae7c58e2cc8e57b0ef2c02555e3efdcb957a750bd6bef85846040516106289291906118f3565b60405180910390a3505061063a611050565b50505050565b600060016000838152602001908152602001600020600101549050919050565b61066982610640565b6106728161105a565b61067c838361106e565b50505050565b61068a61115f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146106ee576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106f88282611167565b505050565b61070561100a565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561072f8161105a565b600047905060008111610777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076e90611968565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff168260405161079d906119b9565b60006040518083038185875af1925050503d80600081146107da576040519150601f19603f3d011682016040523d82523d6000602084013e6107df565b606091505b5050905080610823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081a90611a1a565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5836040516108699190611a3a565b60405180910390a250505061087c611050565b565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b60006001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b81565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756109648161105a565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f11f35a22548bcd4c3788ab4a7e4fba427a2014f02e5d5e2da9af62212c03183f60405160405180910390a3505050565b610a3361100a565b60003411610a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6d90611aa1565b60405180910390fd5b600a34610a839190611628565b811115610ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abc906116dc565b60405180910390fd5b60008134610ad391906116fc565b90506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051610b1d906119b9565b60006040518083038185875af1925050503d8060008114610b5a576040519150601f19603f3d011682016040523d82523d6000602084013e610b5f565b606091505b5050905080610ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9a90611841565b60405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff1683604051610bc9906119b9565b60006040518083038185875af1925050503d8060008114610c06576040519150601f19603f3d011682016040523d82523d6000602084013e610c0b565b606091505b5050905080610c4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c46906118d3565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f45402ae8bb5bbc55e3ae92857386882956ec255d3f3aa9749d08530e0dbf57708587604051610cd09291906118f3565b60405180910390a3505050610ce3611050565b5050565b610cf082610640565b610cf98161105a565b610d038383611167565b50505050565b610d1161100a565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610d3b8161105a565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da190611b0d565b60405180910390fd5b600082905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610dea9190611542565b602060405180830381865afa158015610e07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2b9190611b42565b905060008111610e70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6790611bbb565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610eab929190611bdb565b6020604051808303816000875af1158015610eca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eee91906117a2565b610f2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2490611c50565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fbfed55bdcd242e3dd0f60ddd7d1e87c67f61c34cd9527b3e6455d841b102536283604051610f8a9190611a3a565b60405180910390a3505050610f9d611050565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600260005403611046576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600081905550565b6001600081905550565b61106b8161106661115f565b61125a565b50565b600061107a83836108c8565b61115457600180600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506110f161115f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050611159565b600090505b92915050565b600033905090565b600061117383836108c8565b1561124f5760006001600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506111ec61115f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019050611254565b600090505b92915050565b61126482826108c8565b6112a75780826040517fe2517d3f00000000000000000000000000000000000000000000000000000000815260040161129e929190611c70565b60405180910390fd5b5050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6112e5816112b0565b81146112f057600080fd5b50565b600081359050611302816112dc565b92915050565b60006020828403121561131e5761131d6112ab565b5b600061132c848285016112f3565b91505092915050565b60008115159050919050565b61134a81611335565b82525050565b60006020820190506113656000830184611341565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006113968261136b565b9050919050565b6113a68161138b565b81146113b157600080fd5b50565b6000813590506113c38161139d565b92915050565b6000819050919050565b6113dc816113c9565b81146113e757600080fd5b50565b6000813590506113f9816113d3565b92915050565b60008060008060808587031215611419576114186112ab565b5b6000611427878288016113b4565b9450506020611438878288016113b4565b9350506040611449878288016113ea565b925050606061145a878288016113ea565b91505092959194509250565b6000819050919050565b61147981611466565b811461148457600080fd5b50565b60008135905061149681611470565b92915050565b6000602082840312156114b2576114b16112ab565b5b60006114c084828501611487565b91505092915050565b6114d281611466565b82525050565b60006020820190506114ed60008301846114c9565b92915050565b6000806040838503121561150a576115096112ab565b5b600061151885828601611487565b9250506020611529858286016113b4565b9150509250929050565b61153c8161138b565b82525050565b60006020820190506115576000830184611533565b92915050565b600060208284031215611573576115726112ab565b5b6000611581848285016113b4565b91505092915050565b600080604083850312156115a1576115a06112ab565b5b60006115af858286016113b4565b92505060206115c0858286016113ea565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611633826113c9565b915061163e836113c9565b92508261164e5761164d6115ca565b5b828204905092915050565b600082825260208201905092915050565b7f466565732063616e6e6f742062652067726561746572207468616e203130252060008201527f6f662074686520616d6f756e7400000000000000000000000000000000000000602082015250565b60006116c6602d83611659565b91506116d18261166a565b604082019050919050565b600060208201905081810360008301526116f5816116b9565b9050919050565b6000611707826113c9565b9150611712836113c9565b925082820390508181111561172a576117296115f9565b5b92915050565b611739816113c9565b82525050565b60006060820190506117546000830186611533565b6117616020830185611533565b61176e6040830184611730565b949350505050565b61177f81611335565b811461178a57600080fd5b50565b60008151905061179c81611776565b92915050565b6000602082840312156117b8576117b76112ab565b5b60006117c68482850161178d565b91505092915050565b7f5472616e7366657220746f2073746f7265642061646472657373206661696c6560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b600061182b602183611659565b9150611836826117cf565b604082019050919050565b6000602082019050818103600083015261185a8161181e565b9050919050565b7f5472616e7366657220746f20726563697069656e74206164647265737320666160008201527f696c656400000000000000000000000000000000000000000000000000000000602082015250565b60006118bd602483611659565b91506118c882611861565b604082019050919050565b600060208201905081810360008301526118ec816118b0565b9050919050565b60006040820190506119086000830185611730565b6119156020830184611730565b9392505050565b7f4e6f2066756e647320746f207769746864726177000000000000000000000000600082015250565b6000611952601483611659565b915061195d8261191c565b602082019050919050565b6000602082019050818103600083015261198181611945565b9050919050565b600081905092915050565b50565b60006119a3600083611988565b91506119ae82611993565b600082019050919050565b60006119c482611996565b9150819050919050565b7f5769746864726177206661696c65640000000000000000000000000000000000600082015250565b6000611a04600f83611659565b9150611a0f826119ce565b602082019050919050565b60006020820190508181036000830152611a33816119f7565b9050919050565b6000602082019050611a4f6000830184611730565b92915050565b7f4d7573742073656e64206e617469766520746f20646973747269627574650000600082015250565b6000611a8b601e83611659565b9150611a9682611a55565b602082019050919050565b60006020820190508181036000830152611aba81611a7e565b9050919050565b7f496e76616c696420746f6b656e20616464726573730000000000000000000000600082015250565b6000611af7601583611659565b9150611b0282611ac1565b602082019050919050565b60006020820190508181036000830152611b2681611aea565b9050919050565b600081519050611b3c816113d3565b92915050565b600060208284031215611b5857611b576112ab565b5b6000611b6684828501611b2d565b91505092915050565b7f4e6f20746f6b656e7320746f2077697468647261770000000000000000000000600082015250565b6000611ba5601583611659565b9150611bb082611b6f565b602082019050919050565b60006020820190508181036000830152611bd481611b98565b9050919050565b6000604082019050611bf06000830185611533565b611bfd6020830184611730565b9392505050565b7f5769746864726177204552433230206661696c65640000000000000000000000600082015250565b6000611c3a601583611659565b9150611c4582611c04565b602082019050919050565b60006020820190508181036000830152611c6981611c2d565b9050919050565b6000604082019050611c856000830185611533565b611c9260208301846114c9565b939250505056fea2646970667358221220e08602fc8f9f7f5e4f9eba3235569935d4bfb332bf4c36082de54f6c9fe920dd64736f6c6343000818003300000000000000000000000010a98ce1647df79f0f7816bb445d7b87468ebf7d
Deployed Bytecode
0x6080604052600436106100dd5760003560e01c806375b238fc1161007f578063bbcaac3811610059578063bbcaac38146102ac578063cc8e98f5146102d5578063d547741f146102f1578063f4f3b2001461031a576100dd565b806375b238fc1461021957806391d1485414610244578063a217fddf14610281576100dd565b80632f2ff15d116100bb5780632f2ff15d1461018557806336568abe146101ae5780633ccfd60b146101d757806341275358146101ee576100dd565b806301ffc9a7146100e2578063100500a41461011f578063248a9ca314610148575b600080fd5b3480156100ee57600080fd5b5061010960048036038101906101049190611308565b610343565b6040516101169190611350565b60405180910390f35b34801561012b57600080fd5b50610146600480360381019061014191906113ff565b6103bd565b005b34801561015457600080fd5b5061016f600480360381019061016a919061149c565b610640565b60405161017c91906114d8565b60405180910390f35b34801561019157600080fd5b506101ac60048036038101906101a791906114f3565b610660565b005b3480156101ba57600080fd5b506101d560048036038101906101d091906114f3565b610682565b005b3480156101e357600080fd5b506101ec6106fd565b005b3480156101fa57600080fd5b5061020361087e565b6040516102109190611542565b60405180910390f35b34801561022557600080fd5b5061022e6108a4565b60405161023b91906114d8565b60405180910390f35b34801561025057600080fd5b5061026b600480360381019061026691906114f3565b6108c8565b6040516102789190611350565b60405180910390f35b34801561028d57600080fd5b50610296610933565b6040516102a391906114d8565b60405180910390f35b3480156102b857600080fd5b506102d360048036038101906102ce919061155d565b61093a565b005b6102ef60048036038101906102ea919061158a565b610a2b565b005b3480156102fd57600080fd5b50610318600480360381019061031391906114f3565b610ce7565b005b34801561032657600080fd5b50610341600480360381019061033c919061155d565b610d09565b005b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103b657506103b582610fa0565b5b9050919050565b6103c561100a565b600a826103d29190611628565b811115610414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040b906116dc565b60405180910390fd5b60008490506000828461042791906116fc565b90508173ffffffffffffffffffffffffffffffffffffffff166323b872dd33600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518463ffffffff1660e01b81526004016104889392919061173f565b6020604051808303816000875af11580156104a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cb91906117a2565b61050a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050190611841565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3387846040518463ffffffff1660e01b81526004016105479392919061173f565b6020604051808303816000875af1158015610566573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058a91906117a2565b6105c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c0906118d3565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fd514f0034d93d5ff256ae7c58e2cc8e57b0ef2c02555e3efdcb957a750bd6bef85846040516106289291906118f3565b60405180910390a3505061063a611050565b50505050565b600060016000838152602001908152602001600020600101549050919050565b61066982610640565b6106728161105a565b61067c838361106e565b50505050565b61068a61115f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146106ee576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106f88282611167565b505050565b61070561100a565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561072f8161105a565b600047905060008111610777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076e90611968565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff168260405161079d906119b9565b60006040518083038185875af1925050503d80600081146107da576040519150601f19603f3d011682016040523d82523d6000602084013e6107df565b606091505b5050905080610823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081a90611a1a565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5836040516108699190611a3a565b60405180910390a250505061087c611050565b565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b60006001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b81565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756109648161105a565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f11f35a22548bcd4c3788ab4a7e4fba427a2014f02e5d5e2da9af62212c03183f60405160405180910390a3505050565b610a3361100a565b60003411610a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6d90611aa1565b60405180910390fd5b600a34610a839190611628565b811115610ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abc906116dc565b60405180910390fd5b60008134610ad391906116fc565b90506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051610b1d906119b9565b60006040518083038185875af1925050503d8060008114610b5a576040519150601f19603f3d011682016040523d82523d6000602084013e610b5f565b606091505b5050905080610ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9a90611841565b60405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff1683604051610bc9906119b9565b60006040518083038185875af1925050503d8060008114610c06576040519150601f19603f3d011682016040523d82523d6000602084013e610c0b565b606091505b5050905080610c4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c46906118d3565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f45402ae8bb5bbc55e3ae92857386882956ec255d3f3aa9749d08530e0dbf57708587604051610cd09291906118f3565b60405180910390a3505050610ce3611050565b5050565b610cf082610640565b610cf98161105a565b610d038383611167565b50505050565b610d1161100a565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610d3b8161105a565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da190611b0d565b60405180910390fd5b600082905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610dea9190611542565b602060405180830381865afa158015610e07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2b9190611b42565b905060008111610e70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6790611bbb565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610eab929190611bdb565b6020604051808303816000875af1158015610eca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eee91906117a2565b610f2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2490611c50565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fbfed55bdcd242e3dd0f60ddd7d1e87c67f61c34cd9527b3e6455d841b102536283604051610f8a9190611a3a565b60405180910390a3505050610f9d611050565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600260005403611046576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600081905550565b6001600081905550565b61106b8161106661115f565b61125a565b50565b600061107a83836108c8565b61115457600180600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506110f161115f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050611159565b600090505b92915050565b600033905090565b600061117383836108c8565b1561124f5760006001600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506111ec61115f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019050611254565b600090505b92915050565b61126482826108c8565b6112a75780826040517fe2517d3f00000000000000000000000000000000000000000000000000000000815260040161129e929190611c70565b60405180910390fd5b5050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6112e5816112b0565b81146112f057600080fd5b50565b600081359050611302816112dc565b92915050565b60006020828403121561131e5761131d6112ab565b5b600061132c848285016112f3565b91505092915050565b60008115159050919050565b61134a81611335565b82525050565b60006020820190506113656000830184611341565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006113968261136b565b9050919050565b6113a68161138b565b81146113b157600080fd5b50565b6000813590506113c38161139d565b92915050565b6000819050919050565b6113dc816113c9565b81146113e757600080fd5b50565b6000813590506113f9816113d3565b92915050565b60008060008060808587031215611419576114186112ab565b5b6000611427878288016113b4565b9450506020611438878288016113b4565b9350506040611449878288016113ea565b925050606061145a878288016113ea565b91505092959194509250565b6000819050919050565b61147981611466565b811461148457600080fd5b50565b60008135905061149681611470565b92915050565b6000602082840312156114b2576114b16112ab565b5b60006114c084828501611487565b91505092915050565b6114d281611466565b82525050565b60006020820190506114ed60008301846114c9565b92915050565b6000806040838503121561150a576115096112ab565b5b600061151885828601611487565b9250506020611529858286016113b4565b9150509250929050565b61153c8161138b565b82525050565b60006020820190506115576000830184611533565b92915050565b600060208284031215611573576115726112ab565b5b6000611581848285016113b4565b91505092915050565b600080604083850312156115a1576115a06112ab565b5b60006115af858286016113b4565b92505060206115c0858286016113ea565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611633826113c9565b915061163e836113c9565b92508261164e5761164d6115ca565b5b828204905092915050565b600082825260208201905092915050565b7f466565732063616e6e6f742062652067726561746572207468616e203130252060008201527f6f662074686520616d6f756e7400000000000000000000000000000000000000602082015250565b60006116c6602d83611659565b91506116d18261166a565b604082019050919050565b600060208201905081810360008301526116f5816116b9565b9050919050565b6000611707826113c9565b9150611712836113c9565b925082820390508181111561172a576117296115f9565b5b92915050565b611739816113c9565b82525050565b60006060820190506117546000830186611533565b6117616020830185611533565b61176e6040830184611730565b949350505050565b61177f81611335565b811461178a57600080fd5b50565b60008151905061179c81611776565b92915050565b6000602082840312156117b8576117b76112ab565b5b60006117c68482850161178d565b91505092915050565b7f5472616e7366657220746f2073746f7265642061646472657373206661696c6560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b600061182b602183611659565b9150611836826117cf565b604082019050919050565b6000602082019050818103600083015261185a8161181e565b9050919050565b7f5472616e7366657220746f20726563697069656e74206164647265737320666160008201527f696c656400000000000000000000000000000000000000000000000000000000602082015250565b60006118bd602483611659565b91506118c882611861565b604082019050919050565b600060208201905081810360008301526118ec816118b0565b9050919050565b60006040820190506119086000830185611730565b6119156020830184611730565b9392505050565b7f4e6f2066756e647320746f207769746864726177000000000000000000000000600082015250565b6000611952601483611659565b915061195d8261191c565b602082019050919050565b6000602082019050818103600083015261198181611945565b9050919050565b600081905092915050565b50565b60006119a3600083611988565b91506119ae82611993565b600082019050919050565b60006119c482611996565b9150819050919050565b7f5769746864726177206661696c65640000000000000000000000000000000000600082015250565b6000611a04600f83611659565b9150611a0f826119ce565b602082019050919050565b60006020820190508181036000830152611a33816119f7565b9050919050565b6000602082019050611a4f6000830184611730565b92915050565b7f4d7573742073656e64206e617469766520746f20646973747269627574650000600082015250565b6000611a8b601e83611659565b9150611a9682611a55565b602082019050919050565b60006020820190508181036000830152611aba81611a7e565b9050919050565b7f496e76616c696420746f6b656e20616464726573730000000000000000000000600082015250565b6000611af7601583611659565b9150611b0282611ac1565b602082019050919050565b60006020820190508181036000830152611b2681611aea565b9050919050565b600081519050611b3c816113d3565b92915050565b600060208284031215611b5857611b576112ab565b5b6000611b6684828501611b2d565b91505092915050565b7f4e6f20746f6b656e7320746f2077697468647261770000000000000000000000600082015250565b6000611ba5601583611659565b9150611bb082611b6f565b602082019050919050565b60006020820190508181036000830152611bd481611b98565b9050919050565b6000604082019050611bf06000830185611533565b611bfd6020830184611730565b9392505050565b7f5769746864726177204552433230206661696c65640000000000000000000000600082015250565b6000611c3a601583611659565b9150611c4582611c04565b602082019050919050565b60006020820190508181036000830152611c6981611c2d565b9050919050565b6000604082019050611c856000830185611533565b611c9260208301846114c9565b939250505056fea2646970667358221220e08602fc8f9f7f5e4f9eba3235569935d4bfb332bf4c36082de54f6c9fe920dd64736f6c63430008180033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000010a98ce1647df79f0f7816bb445d7b87468ebf7d
-----Decoded View---------------
Arg [0] : _feeAddress (address): 0x10a98CE1647dF79F0f7816bB445D7B87468eBF7D
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000010a98ce1647df79f0f7816bb445d7b87468ebf7d
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ 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.