Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 376 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Order With Token | 21448813 | 13 days ago | IN | 0 ETH | 0.00048388 | ||||
Order With Token | 21446677 | 14 days ago | IN | 0 ETH | 0.00089142 | ||||
Order With Token | 21445131 | 14 days ago | IN | 0 ETH | 0.00128206 | ||||
Order With Token | 21433474 | 15 days ago | IN | 0 ETH | 0.00107701 | ||||
Order With Token | 21433465 | 15 days ago | IN | 0 ETH | 0.00101257 | ||||
Order With Token | 21366827 | 25 days ago | IN | 0 ETH | 0.00210926 | ||||
Order With ETH | 21349377 | 27 days ago | IN | 0.0017282 ETH | 0.00068677 | ||||
Order With ETH | 21335706 | 29 days ago | IN | 0.01761788 ETH | 0.00079003 | ||||
Order With Token | 21328359 | 30 days ago | IN | 0 ETH | 0.00171072 | ||||
Order With Token | 21328347 | 30 days ago | IN | 0 ETH | 0.00183527 | ||||
Order With ETH | 21320211 | 31 days ago | IN | 0.00188469 ETH | 0.0007631 | ||||
Order With Token | 21318730 | 31 days ago | IN | 0 ETH | 0.00118327 | ||||
Order With ETH | 21316036 | 32 days ago | IN | 0.00189174 ETH | 0.00112982 | ||||
Order With ETH | 21310622 | 33 days ago | IN | 0.00184923 ETH | 0.00068551 | ||||
Order With ETH | 21301568 | 34 days ago | IN | 0.0045974 ETH | 0.00057782 | ||||
Order With ETH | 21301560 | 34 days ago | IN | 0.0045992 ETH | 0.00057062 | ||||
Order With Token | 21255216 | 40 days ago | IN | 0 ETH | 0.00064868 | ||||
Order With Token | 21241582 | 42 days ago | IN | 0 ETH | 0.00054837 | ||||
Order With Token | 21219172 | 45 days ago | IN | 0 ETH | 0.00066728 | ||||
Order With Token | 21212771 | 46 days ago | IN | 0 ETH | 0.00068286 | ||||
Order With Token | 21208246 | 47 days ago | IN | 0 ETH | 0.00073303 | ||||
Order With Token | 21106598 | 61 days ago | IN | 0 ETH | 0.00022075 | ||||
Order With Token | 21106585 | 61 days ago | IN | 0 ETH | 0.0002701 | ||||
Order With Token | 21093044 | 63 days ago | IN | 0 ETH | 0.00066209 | ||||
Order With ETH | 21077845 | 65 days ago | IN | 0.00256664 ETH | 0.00045475 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
21349377 | 27 days ago | 0.0017282 ETH | ||||
21335706 | 29 days ago | 0.01761788 ETH | ||||
21320211 | 31 days ago | 0.00188469 ETH | ||||
21316036 | 32 days ago | 0.00189174 ETH | ||||
21310622 | 33 days ago | 0.00184923 ETH | ||||
21301568 | 34 days ago | 0.0045974 ETH | ||||
21301560 | 34 days ago | 0.0045992 ETH | ||||
21077845 | 65 days ago | 0.00256664 ETH | ||||
21065796 | 67 days ago | 0.0027602 ETH | ||||
21064511 | 67 days ago | 0.0066903 ETH | ||||
21064065 | 67 days ago | 0.00671403 ETH | ||||
21050318 | 69 days ago | 0.00264095 ETH | ||||
21017406 | 73 days ago | 0.00243896 ETH | ||||
21013695 | 74 days ago | 0.00254756 ETH | ||||
21001467 | 76 days ago | 0.0024586 ETH | ||||
20988773 | 77 days ago | 0.00648793 ETH | ||||
20967907 | 80 days ago | 0.0026275 ETH | ||||
20879805 | 93 days ago | 0.00290539 ETH | ||||
20852222 | 97 days ago | 0.00630934 ETH | ||||
20852218 | 97 days ago | 0.00630867 ETH | ||||
20802568 | 103 days ago | 0.00249162 ETH | ||||
20797924 | 104 days ago | 0.00255047 ETH | ||||
20771904 | 108 days ago | 0.00291724 ETH | ||||
20758863 | 110 days ago | 0.02931953 ETH | ||||
20743001 | 112 days ago | 0.002876 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
ImgnaiPaymentHandler
Compiler Version
v0.8.24+commit.e11b9ed9
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-02-03 */ /** * imgnAI Premium Payment Handler * https://imgnai.com */ // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol) pragma solidity ^0.8.20; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev The ETH balance of the account is not enough to perform the operation. */ error AddressInsufficientBalance(address account); /** * @dev There's no code at `target` (it is not a contract). */ error AddressEmptyCode(address target); /** * @dev A call to an address target failed. The target may have reverted. */ error FailedInnerCall(); /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { if (address(this).balance < amount) { revert AddressInsufficientBalance(address(this)); } (bool success, ) = recipient.call{value: amount}(""); if (!success) { revert FailedInnerCall(); } } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason or custom error, it is bubbled * up by this function (like regular Solidity function calls). However, if * the call reverted with no returned reason, this function reverts with a * {FailedInnerCall} error. * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { if (address(this).balance < value) { revert AddressInsufficientBalance(address(this)); } (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an * unsuccessful call. */ function verifyCallResultFromTarget( address target, bool success, bytes memory returndata ) internal view returns (bytes memory) { if (!success) { _revert(returndata); } else { // only check if target is a contract if the call was successful and the return data is empty // otherwise we already know that it was a contract if (returndata.length == 0 && target.code.length == 0) { revert AddressEmptyCode(target); } return returndata; } } /** * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the * revert reason or with a default {FailedInnerCall} error. */ function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) { if (!success) { _revert(returndata); } else { return returndata; } } /** * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}. */ function _revert(bytes memory returndata) private pure { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert FailedInnerCall(); } } } // File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Permit.sol) pragma solidity ^0.8.20; /** * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. * * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't * need to send a transaction, and thus is not required to hold Ether at all. * * ==== Security Considerations * * There are two important considerations concerning the use of `permit`. The first is that a valid permit signature * expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be * considered as an intention to spend the allowance in any specific way. The second is that because permits have * built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should * take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be * generally recommended is: * * ```solidity * function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public { * try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {} * doThing(..., value); * } * * function doThing(..., uint256 value) public { * token.safeTransferFrom(msg.sender, address(this), value); * ... * } * ``` * * Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of * `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also * {SafeERC20-safeTransferFrom}). * * Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so * contracts should have entry points that don't rely on permit. */ interface IERC20Permit { /** * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens, * given ``owner``'s signed approval. * * IMPORTANT: The same issues {IERC20-approve} has related to transaction * ordering also apply here. * * Emits an {Approval} event. * * Requirements: * * - `spender` cannot be the zero address. * - `deadline` must be a timestamp in the future. * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` * over the EIP712-formatted function arguments. * - the signature must use ``owner``'s current nonce (see {nonces}). * * For more information on the signature format, see the * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP * section]. * * CAUTION: See Security Considerations above. */ function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; /** * @dev Returns the current nonce for `owner`. This value must be * included whenever a signature is generated for {permit}. * * Every successful call to {permit} increases ``owner``'s nonce by one. This * prevents a signature from being used multiple times. */ function nonces(address owner) external view returns (uint256); /** * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}. */ // solhint-disable-next-line func-name-mixedcase function DOMAIN_SEPARATOR() external view returns (bytes32); } // File: @openzeppelin/contracts/utils/Context.sol // 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; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity ^0.8.20; /** * @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: @openzeppelin/contracts/token/ERC20/IERC20.sol // 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); } // File: @openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/utils/SafeERC20.sol) pragma solidity ^0.8.20; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using Address for address; /** * @dev An operation with an ERC20 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 Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value, * non-reverting calls are assumed to be successful. */ 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. */ 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. */ 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 Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data); if (returndata.length != 0 && !abi.decode(returndata, (bool))) { 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 silents catches all reverts and returns a bool instead. */ function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We cannot use {Address-functionCall} here since this should return false // and not revert is the subcall reverts. (bool success, bytes memory returndata) = address(token).call(data); return success && (returndata.length == 0 || abi.decode(returndata, (bool))) && address(token).code.length > 0; } } // File: ImgnaiPaymentHandler.sol pragma solidity ^0.8.20; contract ImgnaiPaymentHandler is Ownable { using SafeERC20 for IERC20; bool public paused = false; bool public canOrderWithETH = true; mapping(address => bool) public acceptedTokens; address payable public paymentsWallet; event OrderProcessed( address tokenAddress, string orderUUID, uint256 amount, uint256 timestamp, uint256 blockNumber ); event OrderWithETHEnabled(bool enabled); event TokenStatusModified(address tokenAddress, bool enabled); event PauseStatusModified(bool paused); event PaymentsWalletUpdated(address payable paymentsWallet); constructor(address payable _paymentsWallet) Ownable(msg.sender) { paymentsWallet = _paymentsWallet; } modifier notPaused() { require(!paused, "Contract is paused"); _; } function setAcceptedToken(address _tokenAddress, bool _tokenAccepted) public onlyOwner { acceptedTokens[_tokenAddress] = _tokenAccepted; emit TokenStatusModified(_tokenAddress, _tokenAccepted); } function updatePaymentsWallet(address payable _paymentsWallet) public onlyOwner { paymentsWallet = _paymentsWallet; emit PaymentsWalletUpdated(_paymentsWallet); } function withdrawToken(address _tokenAddress) public onlyOwner { IERC20 token = IERC20(_tokenAddress); uint256 tokenBalance = token.balanceOf(address(this)); require(tokenBalance > 0, "No tokens to withdraw"); token.safeTransfer(paymentsWallet, tokenBalance); } function withdrawETH() public onlyOwner { uint256 ethBalance = address(this).balance; require(ethBalance > 0, "No ETH to withdraw"); paymentsWallet.transfer(ethBalance); } function togglePause(bool _paused) public onlyOwner { paused = _paused; emit PauseStatusModified(_paused); } function orderWithToken(address _tokenAddress, string memory _orderUUID, uint256 _amount) notPaused public { require(acceptedTokens[_tokenAddress], "Token not accepted"); IERC20 token = IERC20(_tokenAddress); token.safeTransferFrom(msg.sender, paymentsWallet, _amount); emit OrderProcessed(_tokenAddress, _orderUUID, _amount, block.timestamp, block.number); } function orderWithETH(string memory _orderUUID) notPaused public payable { require(canOrderWithETH, "ETH payments are currently unavailable"); require(msg.value > 0, "No ETH sent"); paymentsWallet.transfer(msg.value); emit OrderProcessed(address(0), _orderUUID, msg.value, block.timestamp, block.number); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address payable","name":"_paymentsWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":false,"internalType":"string","name":"orderUUID","type":"string"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"OrderProcessed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"OrderWithETHEnabled","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":"bool","name":"paused","type":"bool"}],"name":"PauseStatusModified","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address payable","name":"paymentsWallet","type":"address"}],"name":"PaymentsWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"TokenStatusModified","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"acceptedTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"canOrderWithETH","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_orderUUID","type":"string"}],"name":"orderWithETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"string","name":"_orderUUID","type":"string"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"orderWithToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paymentsWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"bool","name":"_tokenAccepted","type":"bool"}],"name":"setAcceptedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_paused","type":"bool"}],"name":"togglePause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_paymentsWallet","type":"address"}],"name":"updatePaymentsWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040525f8060146101000a81548160ff02191690831515021790555060015f60156101000a81548160ff02191690831515021790555034801562000043575f80fd5b5060405162001b0438038062001b0483398181016040528101906200006991906200025c565b335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000dd575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000d49190620002b0565b60405180910390fd5b620000ee816200013660201b60201c565b508060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050620002cb565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200022682620001fb565b9050919050565b62000238816200021a565b811462000243575f80fd5b50565b5f8151905062000256816200022d565b92915050565b5f60208284031215620002745762000273620001f7565b5b5f620002838482850162000246565b91505092915050565b5f6200029882620001fb565b9050919050565b620002aa816200028c565b82525050565b5f602082019050620002c55f8301846200029f565b92915050565b61182b80620002d95f395ff3fe6080604052600436106100dc575f3560e01c8063894760691161007e578063c2f987ff11610058578063c2f987ff1461027a578063c997dbca14610296578063e086e5ec146102be578063f2fde38b146102d4576100dc565b806389476069146101fe5780638da5cb5b14610226578063b4784e1614610250576100dc565b80635c975abb116100ba5780635c975abb14610158578063715018a61461018257806382dc4a051461019857806386ca93b0146101d4576100dc565b8063225af9dc146100e0578063244d01c01461010857806357d159c614610130575b5f80fd5b3480156100eb575f80fd5b5061010660048036038101906101019190610f5a565b6102fc565b005b348015610113575f80fd5b5061012e6004803603810190610129919061112f565b61037e565b005b34801561013b575f80fd5b50610156600480360381019061015191906111d0565b6104ed565b005b348015610163575f80fd5b5061016c610548565b604051610179919061120a565b60405180910390f35b34801561018d575f80fd5b5061019661055a565b005b3480156101a3575f80fd5b506101be60048036038101906101b99190611223565b61056d565b6040516101cb919061120a565b60405180910390f35b3480156101df575f80fd5b506101e861058a565b6040516101f5919061125d565b60405180910390f35b348015610209575f80fd5b50610224600480360381019061021f9190611223565b6105af565b005b348015610231575f80fd5b5061023a6106c9565b6040516102479190611285565b60405180910390f35b34801561025b575f80fd5b506102646106f0565b604051610271919061120a565b60405180910390f35b610294600480360381019061028f919061129e565b610702565b005b3480156102a1575f80fd5b506102bc60048036038101906102b791906112e5565b610888565b005b3480156102c9575f80fd5b506102d2610921565b005b3480156102df575f80fd5b506102fa60048036038101906102f59190611223565b6109d7565b005b610304610a5b565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f7e6b804a1521f38951ae5dfd670832b7a7cf90b0fd44d696372a1962610e4d1c81604051610373919061125d565b60405180910390a150565b5f60149054906101000a900460ff16156103cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c49061137d565b60405180910390fd5b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044d906113e5565b60405180910390fd5b5f8390506104a83360025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848473ffffffffffffffffffffffffffffffffffffffff16610ae2909392919063ffffffff16565b7f09a9e72a75da99399fbdc91b5866c010004c80bf911e004dfc99c5571d62870184848442436040516104df95949392919061147c565b60405180910390a150505050565b6104f5610a5b565b805f60146101000a81548160ff0219169083151502179055507fa9319d005ae443b476f27bbb91de380491ad0f622a92c853428e24f8adc495b18160405161053d919061120a565b60405180910390a150565b5f60149054906101000a900460ff1681565b610562610a5b565b61056b5f610b64565b565b6001602052805f5260405f205f915054906101000a900460ff1681565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6105b7610a5b565b5f8190505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016105f59190611285565b602060405180830381865afa158015610610573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061063491906114e8565b90505f8111610678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066f9061155d565b60405180910390fd5b6106c460025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff16610c259092919063ffffffff16565b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60159054906101000a900460ff1681565b5f60149054906101000a900460ff1615610751576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107489061137d565b60405180910390fd5b5f60159054906101000a900460ff1661079f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610796906115eb565b60405180910390fd5b5f34116107e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d890611653565b60405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3490811502906040515f60405180830381858888f19350505050158015610845573d5f803e3d5ffd5b507f09a9e72a75da99399fbdc91b5866c010004c80bf911e004dfc99c5571d6287015f8234424360405161087d95949392919061147c565b60405180910390a150565b610890610a5b565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507ffb091b024f944d5b7a7f6eb01feaaffe94a50aa34a2abc0c1c461ceba2ba37df8282604051610915929190611671565b60405180910390a15050565b610929610a5b565b5f4790505f811161096f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610966906116e2565b60405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156109d3573d5f803e3d5ffd5b5050565b6109df610a5b565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a4f575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610a469190611285565b60405180910390fd5b610a5881610b64565b50565b610a63610ca4565b73ffffffffffffffffffffffffffffffffffffffff16610a816106c9565b73ffffffffffffffffffffffffffffffffffffffff1614610ae057610aa4610ca4565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610ad79190611285565b60405180910390fd5b565b610b5e848573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401610b1793929190611700565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610cab565b50505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b610c9f838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401610c58929190611735565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610cab565b505050565b5f33905090565b5f610cd5828473ffffffffffffffffffffffffffffffffffffffff16610d4090919063ffffffff16565b90505f815114158015610cf9575080806020019051810190610cf79190611770565b155b15610d3b57826040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401610d329190611285565b60405180910390fd5b505050565b6060610d4d83835f610d55565b905092915050565b606081471015610d9c57306040517fcd786059000000000000000000000000000000000000000000000000000000008152600401610d939190611285565b60405180910390fd5b5f808573ffffffffffffffffffffffffffffffffffffffff168486604051610dc491906117df565b5f6040518083038185875af1925050503d805f8114610dfe576040519150601f19603f3d011682016040523d82523d5f602084013e610e03565b606091505b5091509150610e13868383610e1e565b925050509392505050565b606082610e3357610e2e82610eab565b610ea3565b5f8251148015610e5957505f8473ffffffffffffffffffffffffffffffffffffffff163b145b15610e9b57836040517f9996b315000000000000000000000000000000000000000000000000000000008152600401610e929190611285565b60405180910390fd5b819050610ea4565b5b9392505050565b5f81511115610ebd5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610f2982610f00565b9050919050565b610f3981610f1f565b8114610f43575f80fd5b50565b5f81359050610f5481610f30565b92915050565b5f60208284031215610f6f57610f6e610ef8565b5b5f610f7c84828501610f46565b91505092915050565b5f610f8f82610f00565b9050919050565b610f9f81610f85565b8114610fa9575f80fd5b50565b5f81359050610fba81610f96565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61100e82610fc8565b810181811067ffffffffffffffff8211171561102d5761102c610fd8565b5b80604052505050565b5f61103f610eef565b905061104b8282611005565b919050565b5f67ffffffffffffffff82111561106a57611069610fd8565b5b61107382610fc8565b9050602081019050919050565b828183375f83830152505050565b5f6110a061109b84611050565b611036565b9050828152602081018484840111156110bc576110bb610fc4565b5b6110c7848285611080565b509392505050565b5f82601f8301126110e3576110e2610fc0565b5b81356110f384826020860161108e565b91505092915050565b5f819050919050565b61110e816110fc565b8114611118575f80fd5b50565b5f8135905061112981611105565b92915050565b5f805f6060848603121561114657611145610ef8565b5b5f61115386828701610fac565b935050602084013567ffffffffffffffff81111561117457611173610efc565b5b611180868287016110cf565b92505060406111918682870161111b565b9150509250925092565b5f8115159050919050565b6111af8161119b565b81146111b9575f80fd5b50565b5f813590506111ca816111a6565b92915050565b5f602082840312156111e5576111e4610ef8565b5b5f6111f2848285016111bc565b91505092915050565b6112048161119b565b82525050565b5f60208201905061121d5f8301846111fb565b92915050565b5f6020828403121561123857611237610ef8565b5b5f61124584828501610fac565b91505092915050565b61125781610f1f565b82525050565b5f6020820190506112705f83018461124e565b92915050565b61127f81610f85565b82525050565b5f6020820190506112985f830184611276565b92915050565b5f602082840312156112b3576112b2610ef8565b5b5f82013567ffffffffffffffff8111156112d0576112cf610efc565b5b6112dc848285016110cf565b91505092915050565b5f80604083850312156112fb576112fa610ef8565b5b5f61130885828601610fac565b9250506020611319858286016111bc565b9150509250929050565b5f82825260208201905092915050565b7f436f6e74726163742069732070617573656400000000000000000000000000005f82015250565b5f611367601283611323565b915061137282611333565b602082019050919050565b5f6020820190508181035f8301526113948161135b565b9050919050565b7f546f6b656e206e6f7420616363657074656400000000000000000000000000005f82015250565b5f6113cf601283611323565b91506113da8261139b565b602082019050919050565b5f6020820190508181035f8301526113fc816113c3565b9050919050565b5f81519050919050565b5f5b8381101561142a57808201518184015260208101905061140f565b5f8484015250505050565b5f61143f82611403565b6114498185611323565b935061145981856020860161140d565b61146281610fc8565b840191505092915050565b611476816110fc565b82525050565b5f60a08201905061148f5f830188611276565b81810360208301526114a18187611435565b90506114b0604083018661146d565b6114bd606083018561146d565b6114ca608083018461146d565b9695505050505050565b5f815190506114e281611105565b92915050565b5f602082840312156114fd576114fc610ef8565b5b5f61150a848285016114d4565b91505092915050565b7f4e6f20746f6b656e7320746f20776974686472617700000000000000000000005f82015250565b5f611547601583611323565b915061155282611513565b602082019050919050565b5f6020820190508181035f8301526115748161153b565b9050919050565b7f455448207061796d656e7473206172652063757272656e746c7920756e6176615f8201527f696c61626c650000000000000000000000000000000000000000000000000000602082015250565b5f6115d5602683611323565b91506115e08261157b565b604082019050919050565b5f6020820190508181035f830152611602816115c9565b9050919050565b7f4e6f204554482073656e740000000000000000000000000000000000000000005f82015250565b5f61163d600b83611323565b915061164882611609565b602082019050919050565b5f6020820190508181035f83015261166a81611631565b9050919050565b5f6040820190506116845f830185611276565b61169160208301846111fb565b9392505050565b7f4e6f2045544820746f20776974686472617700000000000000000000000000005f82015250565b5f6116cc601283611323565b91506116d782611698565b602082019050919050565b5f6020820190508181035f8301526116f9816116c0565b9050919050565b5f6060820190506117135f830186611276565b6117206020830185611276565b61172d604083018461146d565b949350505050565b5f6040820190506117485f830185611276565b611755602083018461146d565b9392505050565b5f8151905061176a816111a6565b92915050565b5f6020828403121561178557611784610ef8565b5b5f6117928482850161175c565b91505092915050565b5f81519050919050565b5f81905092915050565b5f6117b98261179b565b6117c381856117a5565b93506117d381856020860161140d565b80840191505092915050565b5f6117ea82846117af565b91508190509291505056fea26469706673582212204bd519f0b79104ab57c7e9210d98977ae5c48e3a56dcc7d5662a773934ccdc0b64736f6c63430008180033000000000000000000000000c272bdb22cbcbbe867aa0b6a2bc80f7b34c0e294
Deployed Bytecode
0x6080604052600436106100dc575f3560e01c8063894760691161007e578063c2f987ff11610058578063c2f987ff1461027a578063c997dbca14610296578063e086e5ec146102be578063f2fde38b146102d4576100dc565b806389476069146101fe5780638da5cb5b14610226578063b4784e1614610250576100dc565b80635c975abb116100ba5780635c975abb14610158578063715018a61461018257806382dc4a051461019857806386ca93b0146101d4576100dc565b8063225af9dc146100e0578063244d01c01461010857806357d159c614610130575b5f80fd5b3480156100eb575f80fd5b5061010660048036038101906101019190610f5a565b6102fc565b005b348015610113575f80fd5b5061012e6004803603810190610129919061112f565b61037e565b005b34801561013b575f80fd5b50610156600480360381019061015191906111d0565b6104ed565b005b348015610163575f80fd5b5061016c610548565b604051610179919061120a565b60405180910390f35b34801561018d575f80fd5b5061019661055a565b005b3480156101a3575f80fd5b506101be60048036038101906101b99190611223565b61056d565b6040516101cb919061120a565b60405180910390f35b3480156101df575f80fd5b506101e861058a565b6040516101f5919061125d565b60405180910390f35b348015610209575f80fd5b50610224600480360381019061021f9190611223565b6105af565b005b348015610231575f80fd5b5061023a6106c9565b6040516102479190611285565b60405180910390f35b34801561025b575f80fd5b506102646106f0565b604051610271919061120a565b60405180910390f35b610294600480360381019061028f919061129e565b610702565b005b3480156102a1575f80fd5b506102bc60048036038101906102b791906112e5565b610888565b005b3480156102c9575f80fd5b506102d2610921565b005b3480156102df575f80fd5b506102fa60048036038101906102f59190611223565b6109d7565b005b610304610a5b565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f7e6b804a1521f38951ae5dfd670832b7a7cf90b0fd44d696372a1962610e4d1c81604051610373919061125d565b60405180910390a150565b5f60149054906101000a900460ff16156103cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c49061137d565b60405180910390fd5b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044d906113e5565b60405180910390fd5b5f8390506104a83360025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848473ffffffffffffffffffffffffffffffffffffffff16610ae2909392919063ffffffff16565b7f09a9e72a75da99399fbdc91b5866c010004c80bf911e004dfc99c5571d62870184848442436040516104df95949392919061147c565b60405180910390a150505050565b6104f5610a5b565b805f60146101000a81548160ff0219169083151502179055507fa9319d005ae443b476f27bbb91de380491ad0f622a92c853428e24f8adc495b18160405161053d919061120a565b60405180910390a150565b5f60149054906101000a900460ff1681565b610562610a5b565b61056b5f610b64565b565b6001602052805f5260405f205f915054906101000a900460ff1681565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6105b7610a5b565b5f8190505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016105f59190611285565b602060405180830381865afa158015610610573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061063491906114e8565b90505f8111610678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066f9061155d565b60405180910390fd5b6106c460025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff16610c259092919063ffffffff16565b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60159054906101000a900460ff1681565b5f60149054906101000a900460ff1615610751576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107489061137d565b60405180910390fd5b5f60159054906101000a900460ff1661079f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610796906115eb565b60405180910390fd5b5f34116107e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d890611653565b60405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3490811502906040515f60405180830381858888f19350505050158015610845573d5f803e3d5ffd5b507f09a9e72a75da99399fbdc91b5866c010004c80bf911e004dfc99c5571d6287015f8234424360405161087d95949392919061147c565b60405180910390a150565b610890610a5b565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507ffb091b024f944d5b7a7f6eb01feaaffe94a50aa34a2abc0c1c461ceba2ba37df8282604051610915929190611671565b60405180910390a15050565b610929610a5b565b5f4790505f811161096f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610966906116e2565b60405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156109d3573d5f803e3d5ffd5b5050565b6109df610a5b565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a4f575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610a469190611285565b60405180910390fd5b610a5881610b64565b50565b610a63610ca4565b73ffffffffffffffffffffffffffffffffffffffff16610a816106c9565b73ffffffffffffffffffffffffffffffffffffffff1614610ae057610aa4610ca4565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610ad79190611285565b60405180910390fd5b565b610b5e848573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401610b1793929190611700565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610cab565b50505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b610c9f838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401610c58929190611735565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610cab565b505050565b5f33905090565b5f610cd5828473ffffffffffffffffffffffffffffffffffffffff16610d4090919063ffffffff16565b90505f815114158015610cf9575080806020019051810190610cf79190611770565b155b15610d3b57826040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401610d329190611285565b60405180910390fd5b505050565b6060610d4d83835f610d55565b905092915050565b606081471015610d9c57306040517fcd786059000000000000000000000000000000000000000000000000000000008152600401610d939190611285565b60405180910390fd5b5f808573ffffffffffffffffffffffffffffffffffffffff168486604051610dc491906117df565b5f6040518083038185875af1925050503d805f8114610dfe576040519150601f19603f3d011682016040523d82523d5f602084013e610e03565b606091505b5091509150610e13868383610e1e565b925050509392505050565b606082610e3357610e2e82610eab565b610ea3565b5f8251148015610e5957505f8473ffffffffffffffffffffffffffffffffffffffff163b145b15610e9b57836040517f9996b315000000000000000000000000000000000000000000000000000000008152600401610e929190611285565b60405180910390fd5b819050610ea4565b5b9392505050565b5f81511115610ebd5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610f2982610f00565b9050919050565b610f3981610f1f565b8114610f43575f80fd5b50565b5f81359050610f5481610f30565b92915050565b5f60208284031215610f6f57610f6e610ef8565b5b5f610f7c84828501610f46565b91505092915050565b5f610f8f82610f00565b9050919050565b610f9f81610f85565b8114610fa9575f80fd5b50565b5f81359050610fba81610f96565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61100e82610fc8565b810181811067ffffffffffffffff8211171561102d5761102c610fd8565b5b80604052505050565b5f61103f610eef565b905061104b8282611005565b919050565b5f67ffffffffffffffff82111561106a57611069610fd8565b5b61107382610fc8565b9050602081019050919050565b828183375f83830152505050565b5f6110a061109b84611050565b611036565b9050828152602081018484840111156110bc576110bb610fc4565b5b6110c7848285611080565b509392505050565b5f82601f8301126110e3576110e2610fc0565b5b81356110f384826020860161108e565b91505092915050565b5f819050919050565b61110e816110fc565b8114611118575f80fd5b50565b5f8135905061112981611105565b92915050565b5f805f6060848603121561114657611145610ef8565b5b5f61115386828701610fac565b935050602084013567ffffffffffffffff81111561117457611173610efc565b5b611180868287016110cf565b92505060406111918682870161111b565b9150509250925092565b5f8115159050919050565b6111af8161119b565b81146111b9575f80fd5b50565b5f813590506111ca816111a6565b92915050565b5f602082840312156111e5576111e4610ef8565b5b5f6111f2848285016111bc565b91505092915050565b6112048161119b565b82525050565b5f60208201905061121d5f8301846111fb565b92915050565b5f6020828403121561123857611237610ef8565b5b5f61124584828501610fac565b91505092915050565b61125781610f1f565b82525050565b5f6020820190506112705f83018461124e565b92915050565b61127f81610f85565b82525050565b5f6020820190506112985f830184611276565b92915050565b5f602082840312156112b3576112b2610ef8565b5b5f82013567ffffffffffffffff8111156112d0576112cf610efc565b5b6112dc848285016110cf565b91505092915050565b5f80604083850312156112fb576112fa610ef8565b5b5f61130885828601610fac565b9250506020611319858286016111bc565b9150509250929050565b5f82825260208201905092915050565b7f436f6e74726163742069732070617573656400000000000000000000000000005f82015250565b5f611367601283611323565b915061137282611333565b602082019050919050565b5f6020820190508181035f8301526113948161135b565b9050919050565b7f546f6b656e206e6f7420616363657074656400000000000000000000000000005f82015250565b5f6113cf601283611323565b91506113da8261139b565b602082019050919050565b5f6020820190508181035f8301526113fc816113c3565b9050919050565b5f81519050919050565b5f5b8381101561142a57808201518184015260208101905061140f565b5f8484015250505050565b5f61143f82611403565b6114498185611323565b935061145981856020860161140d565b61146281610fc8565b840191505092915050565b611476816110fc565b82525050565b5f60a08201905061148f5f830188611276565b81810360208301526114a18187611435565b90506114b0604083018661146d565b6114bd606083018561146d565b6114ca608083018461146d565b9695505050505050565b5f815190506114e281611105565b92915050565b5f602082840312156114fd576114fc610ef8565b5b5f61150a848285016114d4565b91505092915050565b7f4e6f20746f6b656e7320746f20776974686472617700000000000000000000005f82015250565b5f611547601583611323565b915061155282611513565b602082019050919050565b5f6020820190508181035f8301526115748161153b565b9050919050565b7f455448207061796d656e7473206172652063757272656e746c7920756e6176615f8201527f696c61626c650000000000000000000000000000000000000000000000000000602082015250565b5f6115d5602683611323565b91506115e08261157b565b604082019050919050565b5f6020820190508181035f830152611602816115c9565b9050919050565b7f4e6f204554482073656e740000000000000000000000000000000000000000005f82015250565b5f61163d600b83611323565b915061164882611609565b602082019050919050565b5f6020820190508181035f83015261166a81611631565b9050919050565b5f6040820190506116845f830185611276565b61169160208301846111fb565b9392505050565b7f4e6f2045544820746f20776974686472617700000000000000000000000000005f82015250565b5f6116cc601283611323565b91506116d782611698565b602082019050919050565b5f6020820190508181035f8301526116f9816116c0565b9050919050565b5f6060820190506117135f830186611276565b6117206020830185611276565b61172d604083018461146d565b949350505050565b5f6040820190506117485f830185611276565b611755602083018461146d565b9392505050565b5f8151905061176a816111a6565b92915050565b5f6020828403121561178557611784610ef8565b5b5f6117928482850161175c565b91505092915050565b5f81519050919050565b5f81905092915050565b5f6117b98261179b565b6117c381856117a5565b93506117d381856020860161140d565b80840191505092915050565b5f6117ea82846117af565b91508190509291505056fea26469706673582212204bd519f0b79104ab57c7e9210d98977ae5c48e3a56dcc7d5662a773934ccdc0b64736f6c63430008180033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000c272bdb22cbcbbe867aa0b6a2bc80f7b34c0e294
-----Decoded View---------------
Arg [0] : _paymentsWallet (address): 0xC272BDb22CbCBBe867aa0B6A2Bc80F7b34C0E294
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000c272bdb22cbcbbe867aa0b6a2bc80f7b34c0e294
Deployed Bytecode Sourcemap
23390:2725:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24498:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25351:404;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25212:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23473:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13816:103;;;;;;;;;;;;;:::i;:::-;;23547:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23600:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24691:302;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13141:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23506:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25763:349;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24272:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25001:203;;;;;;;;;;;;;:::i;:::-;;14074:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24498:185;13027:13;:11;:13::i;:::-;24606:15:::1;24589:14;;:32;;;;;;;;;;;;;;;;;;24637:38;24659:15;24637:38;;;;;;:::i;:::-;;;;;;;;24498:185:::0;:::o;25351:404::-;24215:6;;;;;;;;;;;24214:7;24206:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;25477:14:::1;:29;25492:13;25477:29;;;;;;;;;;;;;;;;;;;;;;;;;25469:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;25540:12;25562:13;25540:36;;25589:59;25612:10;25624:14;;;;;;;;;;;25640:7;25589:5;:22;;;;:59;;;;;;:::i;:::-;25666:81;25681:13;25696:10;25708:7;25717:15;25734:12;25666:81;;;;;;;;;;:::i;:::-;;;;;;;;25458:297;25351:404:::0;;;:::o;25212:131::-;13027:13;:11;:13::i;:::-;25284:7:::1;25275:6;;:16;;;;;;;;;;;;;;;;;;25307:28;25327:7;25307:28;;;;;;:::i;:::-;;;;;;;;25212:131:::0;:::o;23473:26::-;;;;;;;;;;;;;:::o;13816:103::-;13027:13;:11;:13::i;:::-;13881:30:::1;13908:1;13881:18;:30::i;:::-;13816:103::o:0;23547:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;23600:37::-;;;;;;;;;;;;;:::o;24691:302::-;13027:13;:11;:13::i;:::-;24765:12:::1;24787:13;24765:36;;24812:20;24835:5;:15;;;24859:4;24835:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24812:53;;24899:1;24884:12;:16;24876:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;24937:48;24956:14;;;;;;;;;;;24972:12;24937:5;:18;;;;:48;;;;;:::i;:::-;24754:239;;24691:302:::0;:::o;13141:87::-;13187:7;13214:6;;;;;;;;;;;13207:13;;13141:87;:::o;23506:34::-;;;;;;;;;;;;;:::o;25763:349::-;24215:6;;;;;;;;;;;24214:7;24206:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;25855:15:::1;;;;;;;;;;;25847:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;25944:1;25932:9;:13;25924:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;25972:14;;;;;;;;;;;:23;;:34;25996:9;25972:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;26024:80;26047:1;26051:10;26063:9;26074:15;26091:12;26024:80;;;;;;;;;;:::i;:::-;;;;;;;;25763:349:::0;:::o;24272:218::-;13027:13;:11;:13::i;:::-;24402:14:::1;24370;:29;24385:13;24370:29;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;24432:50;24452:13;24467:14;24432:50;;;;;;;:::i;:::-;;;;;;;;24272:218:::0;;:::o;25001:203::-;13027:13;:11;:13::i;:::-;25052:18:::1;25073:21;25052:42;;25126:1;25113:10;:14;25105:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;25161:14;;;;;;;;;;;:23;;:35;25185:10;25161:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;25041:163;25001:203::o:0;14074:220::-;13027:13;:11;:13::i;:::-;14179:1:::1;14159:22;;:8;:22;;::::0;14155:93:::1;;14233:1;14205:31;;;;;;;;;;;:::i;:::-;;;;;;;;14155:93;14258:28;14277:8;14258:18;:28::i;:::-;14074:220:::0;:::o;13306:166::-;13377:12;:10;:12::i;:::-;13366:23;;:7;:5;:7::i;:::-;:23;;;13362:103;;13440:12;:10;:12::i;:::-;13413:40;;;;;;;;;;;:::i;:::-;;;;;;;;13362:103;13306:166::o;19172:190::-;19273:81;19293:5;19315;:18;;;19336:4;19342:2;19346:5;19300:53;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19273:19;:81::i;:::-;19172:190;;;;:::o;14454:191::-;14528:16;14547:6;;;;;;;;;;;14528:25;;14573:8;14564:6;;:17;;;;;;;;;;;;;;;;;;14628:8;14597:40;;14618:8;14597:40;;;;;;;;;;;;14517:128;14454:191;:::o;18765:162::-;18848:71;18868:5;18890;:14;;;18907:2;18911:5;18875:43;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18848:19;:71::i;:::-;18765:162;;;:::o;11150:98::-;11203:7;11230:10;11223:17;;11150:98;:::o;21576:638::-;22000:23;22026:33;22054:4;22034:5;22026:27;;;;:33;;;;:::i;:::-;22000:59;;22095:1;22074:10;:17;:22;;:57;;;;;22112:10;22101:30;;;;;;;;;;;;:::i;:::-;22100:31;22074:57;22070:137;;;22188:5;22155:40;;;;;;;;;;;:::i;:::-;;;;;;;;22070:137;21646:568;21576:638;;:::o;2866:153::-;2941:12;2973:38;2995:6;3003:4;3009:1;2973:21;:38::i;:::-;2966:45;;2866:153;;;;:::o;3354:398::-;3453:12;3506:5;3482:21;:29;3478:110;;;3570:4;3535:41;;;;;;;;;;;:::i;:::-;;;;;;;;3478:110;3599:12;3613:23;3640:6;:11;;3659:5;3666:4;3640:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3598:73;;;;3689:55;3716:6;3724:7;3733:10;3689:26;:55::i;:::-;3682:62;;;;3354:398;;;;;:::o;4830:597::-;4978:12;5008:7;5003:417;;5032:19;5040:10;5032:7;:19::i;:::-;5003:417;;;5281:1;5260:10;:17;:22;:49;;;;;5308:1;5286:6;:18;;;:23;5260:49;5256:121;;;5354:6;5337:24;;;;;;;;;;;:::i;:::-;;;;;;;;5256:121;5398:10;5391:17;;;;5003:417;4830:597;;;;;;:::o;5980:528::-;6133:1;6113:10;:17;:21;6109:392;;;6345:10;6339:17;6402:15;6389:10;6385:2;6381:19;6374:44;6109:392;6472:17;;;;;;;;;;;;;;7:75:1;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:104::-;511:7;540:24;558:5;540:24;:::i;:::-;529:35;;466:104;;;:::o;576:138::-;657:32;683:5;657:32;:::i;:::-;650:5;647:43;637:71;;704:1;701;694:12;637:71;576:138;:::o;720:155::-;774:5;812:6;799:20;790:29;;828:41;863:5;828:41;:::i;:::-;720:155;;;;:::o;881:345::-;948:6;997:2;985:9;976:7;972:23;968:32;965:119;;;1003:79;;:::i;:::-;965:119;1123:1;1148:61;1201:7;1192:6;1181:9;1177:22;1148:61;:::i;:::-;1138:71;;1094:125;881:345;;;;:::o;1232:96::-;1269:7;1298:24;1316:5;1298:24;:::i;:::-;1287:35;;1232:96;;;:::o;1334:122::-;1407:24;1425:5;1407:24;:::i;:::-;1400:5;1397:35;1387:63;;1446:1;1443;1436:12;1387:63;1334:122;:::o;1462:139::-;1508:5;1546:6;1533:20;1524:29;;1562:33;1589:5;1562:33;:::i;:::-;1462:139;;;;:::o;1607:117::-;1716:1;1713;1706:12;1730:117;1839:1;1836;1829:12;1853:102;1894:6;1945:2;1941:7;1936:2;1929:5;1925:14;1921:28;1911:38;;1853:102;;;:::o;1961:180::-;2009:77;2006:1;1999:88;2106:4;2103:1;2096:15;2130:4;2127:1;2120:15;2147:281;2230:27;2252:4;2230:27;:::i;:::-;2222:6;2218:40;2360:6;2348:10;2345:22;2324:18;2312:10;2309:34;2306:62;2303:88;;;2371:18;;:::i;:::-;2303:88;2411:10;2407:2;2400:22;2190:238;2147:281;;:::o;2434:129::-;2468:6;2495:20;;:::i;:::-;2485:30;;2524:33;2552:4;2544:6;2524:33;:::i;:::-;2434:129;;;:::o;2569:308::-;2631:4;2721:18;2713:6;2710:30;2707:56;;;2743:18;;:::i;:::-;2707:56;2781:29;2803:6;2781:29;:::i;:::-;2773:37;;2865:4;2859;2855:15;2847:23;;2569:308;;;:::o;2883:146::-;2980:6;2975:3;2970;2957:30;3021:1;3012:6;3007:3;3003:16;2996:27;2883:146;;;:::o;3035:425::-;3113:5;3138:66;3154:49;3196:6;3154:49;:::i;:::-;3138:66;:::i;:::-;3129:75;;3227:6;3220:5;3213:21;3265:4;3258:5;3254:16;3303:3;3294:6;3289:3;3285:16;3282:25;3279:112;;;3310:79;;:::i;:::-;3279:112;3400:54;3447:6;3442:3;3437;3400:54;:::i;:::-;3119:341;3035:425;;;;;:::o;3480:340::-;3536:5;3585:3;3578:4;3570:6;3566:17;3562:27;3552:122;;3593:79;;:::i;:::-;3552:122;3710:6;3697:20;3735:79;3810:3;3802:6;3795:4;3787:6;3783:17;3735:79;:::i;:::-;3726:88;;3542:278;3480:340;;;;:::o;3826:77::-;3863:7;3892:5;3881:16;;3826:77;;;:::o;3909:122::-;3982:24;4000:5;3982:24;:::i;:::-;3975:5;3972:35;3962:63;;4021:1;4018;4011:12;3962:63;3909:122;:::o;4037:139::-;4083:5;4121:6;4108:20;4099:29;;4137:33;4164:5;4137:33;:::i;:::-;4037:139;;;;:::o;4182:799::-;4269:6;4277;4285;4334:2;4322:9;4313:7;4309:23;4305:32;4302:119;;;4340:79;;:::i;:::-;4302:119;4460:1;4485:53;4530:7;4521:6;4510:9;4506:22;4485:53;:::i;:::-;4475:63;;4431:117;4615:2;4604:9;4600:18;4587:32;4646:18;4638:6;4635:30;4632:117;;;4668:79;;:::i;:::-;4632:117;4773:63;4828:7;4819:6;4808:9;4804:22;4773:63;:::i;:::-;4763:73;;4558:288;4885:2;4911:53;4956:7;4947:6;4936:9;4932:22;4911:53;:::i;:::-;4901:63;;4856:118;4182:799;;;;;:::o;4987:90::-;5021:7;5064:5;5057:13;5050:21;5039:32;;4987:90;;;:::o;5083:116::-;5153:21;5168:5;5153:21;:::i;:::-;5146:5;5143:32;5133:60;;5189:1;5186;5179:12;5133:60;5083:116;:::o;5205:133::-;5248:5;5286:6;5273:20;5264:29;;5302:30;5326:5;5302:30;:::i;:::-;5205:133;;;;:::o;5344:323::-;5400:6;5449:2;5437:9;5428:7;5424:23;5420:32;5417:119;;;5455:79;;:::i;:::-;5417:119;5575:1;5600:50;5642:7;5633:6;5622:9;5618:22;5600:50;:::i;:::-;5590:60;;5546:114;5344:323;;;;:::o;5673:109::-;5754:21;5769:5;5754:21;:::i;:::-;5749:3;5742:34;5673:109;;:::o;5788:210::-;5875:4;5913:2;5902:9;5898:18;5890:26;;5926:65;5988:1;5977:9;5973:17;5964:6;5926:65;:::i;:::-;5788:210;;;;:::o;6004:329::-;6063:6;6112:2;6100:9;6091:7;6087:23;6083:32;6080:119;;;6118:79;;:::i;:::-;6080:119;6238:1;6263:53;6308:7;6299:6;6288:9;6284:22;6263:53;:::i;:::-;6253:63;;6209:117;6004:329;;;;:::o;6339:142::-;6442:32;6468:5;6442:32;:::i;:::-;6437:3;6430:45;6339:142;;:::o;6487:254::-;6596:4;6634:2;6623:9;6619:18;6611:26;;6647:87;6731:1;6720:9;6716:17;6707:6;6647:87;:::i;:::-;6487:254;;;;:::o;6747:118::-;6834:24;6852:5;6834:24;:::i;:::-;6829:3;6822:37;6747:118;;:::o;6871:222::-;6964:4;7002:2;6991:9;6987:18;6979:26;;7015:71;7083:1;7072:9;7068:17;7059:6;7015:71;:::i;:::-;6871:222;;;;:::o;7099:509::-;7168:6;7217:2;7205:9;7196:7;7192:23;7188:32;7185:119;;;7223:79;;:::i;:::-;7185:119;7371:1;7360:9;7356:17;7343:31;7401:18;7393:6;7390:30;7387:117;;;7423:79;;:::i;:::-;7387:117;7528:63;7583:7;7574:6;7563:9;7559:22;7528:63;:::i;:::-;7518:73;;7314:287;7099:509;;;;:::o;7614:468::-;7679:6;7687;7736:2;7724:9;7715:7;7711:23;7707:32;7704:119;;;7742:79;;:::i;:::-;7704:119;7862:1;7887:53;7932:7;7923:6;7912:9;7908:22;7887:53;:::i;:::-;7877:63;;7833:117;7989:2;8015:50;8057:7;8048:6;8037:9;8033:22;8015:50;:::i;:::-;8005:60;;7960:115;7614:468;;;;;:::o;8088:169::-;8172:11;8206:6;8201:3;8194:19;8246:4;8241:3;8237:14;8222:29;;8088:169;;;;:::o;8263:168::-;8403:20;8399:1;8391:6;8387:14;8380:44;8263:168;:::o;8437:366::-;8579:3;8600:67;8664:2;8659:3;8600:67;:::i;:::-;8593:74;;8676:93;8765:3;8676:93;:::i;:::-;8794:2;8789:3;8785:12;8778:19;;8437:366;;;:::o;8809:419::-;8975:4;9013:2;9002:9;8998:18;8990:26;;9062:9;9056:4;9052:20;9048:1;9037:9;9033:17;9026:47;9090:131;9216:4;9090:131;:::i;:::-;9082:139;;8809:419;;;:::o;9234:168::-;9374:20;9370:1;9362:6;9358:14;9351:44;9234:168;:::o;9408:366::-;9550:3;9571:67;9635:2;9630:3;9571:67;:::i;:::-;9564:74;;9647:93;9736:3;9647:93;:::i;:::-;9765:2;9760:3;9756:12;9749:19;;9408:366;;;:::o;9780:419::-;9946:4;9984:2;9973:9;9969:18;9961:26;;10033:9;10027:4;10023:20;10019:1;10008:9;10004:17;9997:47;10061:131;10187:4;10061:131;:::i;:::-;10053:139;;9780:419;;;:::o;10205:99::-;10257:6;10291:5;10285:12;10275:22;;10205:99;;;:::o;10310:246::-;10391:1;10401:113;10415:6;10412:1;10409:13;10401:113;;;10500:1;10495:3;10491:11;10485:18;10481:1;10476:3;10472:11;10465:39;10437:2;10434:1;10430:10;10425:15;;10401:113;;;10548:1;10539:6;10534:3;10530:16;10523:27;10372:184;10310:246;;;:::o;10562:377::-;10650:3;10678:39;10711:5;10678:39;:::i;:::-;10733:71;10797:6;10792:3;10733:71;:::i;:::-;10726:78;;10813:65;10871:6;10866:3;10859:4;10852:5;10848:16;10813:65;:::i;:::-;10903:29;10925:6;10903:29;:::i;:::-;10898:3;10894:39;10887:46;;10654:285;10562:377;;;;:::o;10945:118::-;11032:24;11050:5;11032:24;:::i;:::-;11027:3;11020:37;10945:118;;:::o;11069:755::-;11294:4;11332:3;11321:9;11317:19;11309:27;;11346:71;11414:1;11403:9;11399:17;11390:6;11346:71;:::i;:::-;11464:9;11458:4;11454:20;11449:2;11438:9;11434:18;11427:48;11492:78;11565:4;11556:6;11492:78;:::i;:::-;11484:86;;11580:72;11648:2;11637:9;11633:18;11624:6;11580:72;:::i;:::-;11662;11730:2;11719:9;11715:18;11706:6;11662:72;:::i;:::-;11744:73;11812:3;11801:9;11797:19;11788:6;11744:73;:::i;:::-;11069:755;;;;;;;;:::o;11830:143::-;11887:5;11918:6;11912:13;11903:22;;11934:33;11961:5;11934:33;:::i;:::-;11830:143;;;;:::o;11979:351::-;12049:6;12098:2;12086:9;12077:7;12073:23;12069:32;12066:119;;;12104:79;;:::i;:::-;12066:119;12224:1;12249:64;12305:7;12296:6;12285:9;12281:22;12249:64;:::i;:::-;12239:74;;12195:128;11979:351;;;;:::o;12336:171::-;12476:23;12472:1;12464:6;12460:14;12453:47;12336:171;:::o;12513:366::-;12655:3;12676:67;12740:2;12735:3;12676:67;:::i;:::-;12669:74;;12752:93;12841:3;12752:93;:::i;:::-;12870:2;12865:3;12861:12;12854:19;;12513:366;;;:::o;12885:419::-;13051:4;13089:2;13078:9;13074:18;13066:26;;13138:9;13132:4;13128:20;13124:1;13113:9;13109:17;13102:47;13166:131;13292:4;13166:131;:::i;:::-;13158:139;;12885:419;;;:::o;13310:225::-;13450:34;13446:1;13438:6;13434:14;13427:58;13519:8;13514:2;13506:6;13502:15;13495:33;13310:225;:::o;13541:366::-;13683:3;13704:67;13768:2;13763:3;13704:67;:::i;:::-;13697:74;;13780:93;13869:3;13780:93;:::i;:::-;13898:2;13893:3;13889:12;13882:19;;13541:366;;;:::o;13913:419::-;14079:4;14117:2;14106:9;14102:18;14094:26;;14166:9;14160:4;14156:20;14152:1;14141:9;14137:17;14130:47;14194:131;14320:4;14194:131;:::i;:::-;14186:139;;13913:419;;;:::o;14338:161::-;14478:13;14474:1;14466:6;14462:14;14455:37;14338:161;:::o;14505:366::-;14647:3;14668:67;14732:2;14727:3;14668:67;:::i;:::-;14661:74;;14744:93;14833:3;14744:93;:::i;:::-;14862:2;14857:3;14853:12;14846:19;;14505:366;;;:::o;14877:419::-;15043:4;15081:2;15070:9;15066:18;15058:26;;15130:9;15124:4;15120:20;15116:1;15105:9;15101:17;15094:47;15158:131;15284:4;15158:131;:::i;:::-;15150:139;;14877:419;;;:::o;15302:320::-;15417:4;15455:2;15444:9;15440:18;15432:26;;15468:71;15536:1;15525:9;15521:17;15512:6;15468:71;:::i;:::-;15549:66;15611:2;15600:9;15596:18;15587:6;15549:66;:::i;:::-;15302:320;;;;;:::o;15628:168::-;15768:20;15764:1;15756:6;15752:14;15745:44;15628:168;:::o;15802:366::-;15944:3;15965:67;16029:2;16024:3;15965:67;:::i;:::-;15958:74;;16041:93;16130:3;16041:93;:::i;:::-;16159:2;16154:3;16150:12;16143:19;;15802:366;;;:::o;16174:419::-;16340:4;16378:2;16367:9;16363:18;16355:26;;16427:9;16421:4;16417:20;16413:1;16402:9;16398:17;16391:47;16455:131;16581:4;16455:131;:::i;:::-;16447:139;;16174:419;;;:::o;16599:442::-;16748:4;16786:2;16775:9;16771:18;16763:26;;16799:71;16867:1;16856:9;16852:17;16843:6;16799:71;:::i;:::-;16880:72;16948:2;16937:9;16933:18;16924:6;16880:72;:::i;:::-;16962;17030:2;17019:9;17015:18;17006:6;16962:72;:::i;:::-;16599:442;;;;;;:::o;17047:332::-;17168:4;17206:2;17195:9;17191:18;17183:26;;17219:71;17287:1;17276:9;17272:17;17263:6;17219:71;:::i;:::-;17300:72;17368:2;17357:9;17353:18;17344:6;17300:72;:::i;:::-;17047:332;;;;;:::o;17385:137::-;17439:5;17470:6;17464:13;17455:22;;17486:30;17510:5;17486:30;:::i;:::-;17385:137;;;;:::o;17528:345::-;17595:6;17644:2;17632:9;17623:7;17619:23;17615:32;17612:119;;;17650:79;;:::i;:::-;17612:119;17770:1;17795:61;17848:7;17839:6;17828:9;17824:22;17795:61;:::i;:::-;17785:71;;17741:125;17528:345;;;;:::o;17879:98::-;17930:6;17964:5;17958:12;17948:22;;17879:98;;;:::o;17983:147::-;18084:11;18121:3;18106:18;;17983:147;;;;:::o;18136:386::-;18240:3;18268:38;18300:5;18268:38;:::i;:::-;18322:88;18403:6;18398:3;18322:88;:::i;:::-;18315:95;;18419:65;18477:6;18472:3;18465:4;18458:5;18454:16;18419:65;:::i;:::-;18509:6;18504:3;18500:16;18493:23;;18244:278;18136:386;;;;:::o;18528:271::-;18658:3;18680:93;18769:3;18760:6;18680:93;:::i;:::-;18673:100;;18790:3;18783:10;;18528:271;;;;:::o
Swarm Source
ipfs://4bd519f0b79104ab57c7e9210d98977ae5c48e3a56dcc7d5662a773934ccdc0b
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 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.