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 102 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Derisk | 20831982 | 123 days ago | IN | 0 ETH | 0.00273219 | ||||
Derisk | 20831977 | 123 days ago | IN | 0 ETH | 0.00315064 | ||||
Derisk | 20831972 | 123 days ago | IN | 0 ETH | 0.00315503 | ||||
Derisk | 20831967 | 123 days ago | IN | 0 ETH | 0.00320461 | ||||
Derisk | 20831962 | 123 days ago | IN | 0 ETH | 0.00317368 | ||||
Derisk | 20831957 | 123 days ago | IN | 0 ETH | 0.00330816 | ||||
Derisk | 20831952 | 123 days ago | IN | 0 ETH | 0.00321832 | ||||
Derisk | 20831947 | 123 days ago | IN | 0 ETH | 0.00315023 | ||||
Derisk | 20831942 | 123 days ago | IN | 0 ETH | 0.00298913 | ||||
Derisk | 20831937 | 123 days ago | IN | 0 ETH | 0.00300489 | ||||
Derisk | 20831932 | 123 days ago | IN | 0 ETH | 0.00300976 | ||||
Derisk | 20831927 | 123 days ago | IN | 0 ETH | 0.00315048 | ||||
Derisk | 20831922 | 123 days ago | IN | 0 ETH | 0.00307311 | ||||
Derisk | 20831917 | 123 days ago | IN | 0 ETH | 0.00312202 | ||||
Derisk | 20831912 | 123 days ago | IN | 0 ETH | 0.0028523 | ||||
Derisk | 20831908 | 123 days ago | IN | 0 ETH | 0.00283466 | ||||
Derisk | 20831902 | 123 days ago | IN | 0 ETH | 0.00291494 | ||||
Derisk | 20831897 | 123 days ago | IN | 0 ETH | 0.00282994 | ||||
Derisk | 20831892 | 123 days ago | IN | 0 ETH | 0.0028608 | ||||
Derisk | 20831887 | 123 days ago | IN | 0 ETH | 0.00273244 | ||||
Derisk | 20831882 | 123 days ago | IN | 0 ETH | 0.00322312 | ||||
Derisk | 20831877 | 123 days ago | IN | 0 ETH | 0.00286817 | ||||
Derisk | 20831872 | 123 days ago | IN | 0 ETH | 0.00278583 | ||||
Derisk | 20831868 | 123 days ago | IN | 0 ETH | 0.00279821 | ||||
Derisk | 20831862 | 123 days ago | IN | 0 ETH | 0.00295565 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
20831982 | 123 days ago | 1.06188525 ETH | ||||
20831982 | 123 days ago | 0.00321277 ETH | ||||
20831982 | 123 days ago | 1.06509802 ETH | ||||
20831977 | 123 days ago | 1.04152456 ETH | ||||
20831977 | 123 days ago | 0.00315418 ETH | ||||
20831977 | 123 days ago | 1.04467874 ETH | ||||
20831972 | 123 days ago | 1.04152017 ETH | ||||
20831972 | 123 days ago | 0.00315857 ETH | ||||
20831972 | 123 days ago | 1.04467874 ETH | ||||
20831967 | 123 days ago | 1.04147053 ETH | ||||
20831967 | 123 days ago | 0.00320821 ETH | ||||
20831967 | 123 days ago | 1.04467874 ETH | ||||
20831962 | 123 days ago | 1.0415015 ETH | ||||
20831962 | 123 days ago | 0.00317724 ETH | ||||
20831962 | 123 days ago | 1.04467874 ETH | ||||
20831957 | 123 days ago | 1.04136687 ETH | ||||
20831957 | 123 days ago | 0.00331187 ETH | ||||
20831957 | 123 days ago | 1.04467874 ETH | ||||
20831952 | 123 days ago | 1.0414568 ETH | ||||
20831952 | 123 days ago | 0.00322193 ETH | ||||
20831952 | 123 days ago | 1.04467874 ETH | ||||
20831947 | 123 days ago | 1.04152498 ETH | ||||
20831947 | 123 days ago | 0.00315376 ETH | ||||
20831947 | 123 days ago | 1.04467874 ETH | ||||
20831942 | 123 days ago | 1.04168625 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
DeriskRouter
Compiler Version
v0.8.24+commit.e11b9ed9
Optimization Enabled:
Yes with 200 runs
Other Settings:
istanbul EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.24; import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; import "@openzeppelin/contracts/utils/Address.sol"; import "./interfaces/IDEXRouter.sol"; import "./interfaces/IDEXFactory.sol"; import "./interfaces/IDEXPair.sol"; import "./interfaces/IERC20.sol"; interface IStaking { function stakedBalanceOf(address account) external view returns (uint256); } contract DeriskRouter { using ECDSA for bytes32; using Address for address payable; IDEXRouter private constant uniswapV2Router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address private constant factory = 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f; address private constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; IERC20 private constant APES = IERC20(0x09675e24CA1EB06023451AC8088EcA1040F47585); uint256 private constant FEE_CAP = 500; address payable public owner; address payable public feeCollector; mapping(address => bool) public isExecutor; mapping(address => mapping(address => uint256)) public lastExecutedNonce; address public stakingContract; uint256[3] public tiers = [1250000 * 10**18, 250000 * 10**18, 100000 * 10**18]; uint256[4] public feesPerTier = [0, 25, 50, 100]; bytes32 public DOMAIN_SEPARATOR = keccak256( abi.encode( keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"), keccak256("Apescreener"), keccak256("1"), block.chainid, address(this) ) ); bytes32 public constant PERMIT_TYPEHASH = keccak256("Data(address wallet,address token,uint256 nonce,uint256 deadline)"); event Derisked(address wallet, address token, uint256 nonce); error INVALID_SIGNATURE(); error ORDER_EXPIRED(); error ORDER_ALREADY_EXECUTED(); error NOT_AUTHORIZED(); error INVALID_TX(); error INVALID_ADDRESS(); constructor(address payable _owner) { owner = payable(_owner); feeCollector = _owner; isExecutor[msg.sender] = true; } function derisk(address payable userWallet, address token, uint256 nonce, uint256 signatureDeadline, uint256 amountIn, uint256 minAmountOut, bytes calldata signature) external { uint256 gasFees; uint256 gasLimit = gasleft() + 25000; if (msg.sender != userWallet) { gasFees = gasLimit * tx.gasprice; // test with all kind of txs if (lastExecutedNonce[userWallet][token] >= nonce) revert ORDER_ALREADY_EXECUTED(); //this makes sure that the nonce is always increasing if (!isExecutor[msg.sender]) revert NOT_AUTHORIZED(); if (signatureDeadline < block.timestamp) revert ORDER_EXPIRED(); bytes32 digest = keccak256(abi.encodePacked("\x19\x01", DOMAIN_SEPARATOR, keccak256(abi.encode(PERMIT_TYPEHASH, userWallet, token, nonce, signatureDeadline)))); address recoveredAddress = digest.recover(signature); if (recoveredAddress != userWallet) revert INVALID_SIGNATURE(); } address[] memory path = new address[](2); path[0] = token; path[1] = WETH; _swapExactTokensForETHSupportingFeeOnTransferTokens(amountIn, minAmountOut, path, userWallet); uint256 fees = address(this).balance * getFeesBps(userWallet) / 10000; feeCollector.sendValue(fees + gasFees); userWallet.sendValue(address(this).balance); lastExecutedNonce[userWallet][token] = nonce; emit Derisked(userWallet, token, nonce); } function getFeesBps(address userWallet) public view returns (uint256) { uint256 balanceUser = APES.balanceOf(userWallet); if (stakingContract != address(0)) { balanceUser += IStaking(stakingContract).stakedBalanceOf(userWallet); } if (balanceUser > tiers[0]) { return feesPerTier[0]; } else if (balanceUser > tiers[1]) { return feesPerTier[1]; } else if (balanceUser > tiers[2]) { return feesPerTier[2]; } else { return feesPerTier[3]; } } function _swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] memory path, address userWallet ) internal { address pair = IDEXFactory(factory).getPair(path[0], path[1]); _safeTransferFrom(path[0], userWallet, pair, amountIn); _swapSupportingFeeOnTransferTokens(path, IDEXPair(pair)); uint amountOut = IERC20(WETH).balanceOf(address(this)); require(amountOut >= amountOutMin, 'INSUFFICIENT_OUTPUT_AMOUNT'); IERC20(WETH).withdraw(amountOut); } function _swapSupportingFeeOnTransferTokens(address[] memory path, IDEXPair pair) internal virtual { for (uint i; i < path.length - 1; i++) { (address input, address output) = (path[i], path[i + 1]); (address token0,) = _sortTokens(input, output); uint amountInput; uint amountOutput; { // scope to avoid stack too deep errors (uint reserve0, uint reserve1,) = pair.getReserves(); (uint reserveInput, uint reserveOutput) = input == token0 ? (reserve0, reserve1) : (reserve1, reserve0); amountInput = IERC20(input).balanceOf(address(pair)) - reserveInput; amountOutput = uniswapV2Router.getAmountOut(amountInput, reserveInput, reserveOutput); } (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOutput) : (amountOutput, uint(0)); pair.swap(amount0Out, amount1Out, address(this), new bytes(0)); } } function _sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) { require(tokenA != tokenB, 'IDENTICAL_ADDRESSES'); (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA); require(token0 != address(0), 'ZERO_ADDRESS'); } function _safeTransferFrom( address token, address from, address to, uint256 value ) internal { // bytes4(keccak256(bytes('transferFrom(address,address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value)); require( success && (data.length == 0 || abi.decode(data, (bool))), 'transferFrom failed' ); } function setStakingContract(address _stakingContract) external { if (msg.sender != owner) revert NOT_AUTHORIZED(); stakingContract = _stakingContract; } function setFeeCollector(address payable _feeCollector) external { if (_feeCollector == address(0)) revert INVALID_ADDRESS(); if (msg.sender != owner) revert NOT_AUTHORIZED(); feeCollector = _feeCollector; } function setExecutor(address executor, bool value) external { if (msg.sender != owner) revert NOT_AUTHORIZED(); isExecutor[executor] = value; } function setOwner(address payable newOwner) external { if (newOwner == address(0)) revert INVALID_ADDRESS(); if (msg.sender != owner) revert NOT_AUTHORIZED(); owner = newOwner; } function setTiers(uint256 _tiers1, uint256 _tiers2, uint256 _tiers3) external { if (msg.sender != owner) revert NOT_AUTHORIZED(); tiers = [_tiers1 * 10**18, _tiers2 * 10**18, _tiers3 * 10**18]; } function setFees(uint256 _fee1, uint256 _fee2, uint256 _fee3, uint256 _fee4) external { if (msg.sender != owner) revert NOT_AUTHORIZED(); require(_fee1 <= FEE_CAP && _fee2 <= FEE_CAP && _fee3 <= FEE_CAP && _fee4 <= FEE_CAP, "Fees must be less than 500 bps"); feesPerTier = [_fee1, _fee2, _fee3, _fee4]; } receive() external payable {} }
// SPDX-License-Identifier: MIT // 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(); } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (utils/cryptography/ECDSA.sol) pragma solidity ^0.8.20; /** * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations. * * These functions can be used to verify that a message was signed by the holder * of the private keys of a given address. */ library ECDSA { enum RecoverError { NoError, InvalidSignature, InvalidSignatureLength, InvalidSignatureS } /** * @dev The signature derives the `address(0)`. */ error ECDSAInvalidSignature(); /** * @dev The signature has an invalid length. */ error ECDSAInvalidSignatureLength(uint256 length); /** * @dev The signature has an S value that is in the upper half order. */ error ECDSAInvalidSignatureS(bytes32 s); /** * @dev Returns the address that signed a hashed message (`hash`) with `signature` or an error. This will not * return address(0) without also returning an error description. Errors are documented using an enum (error type) * and a bytes32 providing additional information about the error. * * If no error is returned, then the address can be used for verification purposes. * * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures: * this function rejects them by requiring the `s` value to be in the lower * half order, and the `v` value to be either 27 or 28. * * IMPORTANT: `hash` _must_ be the result of a hash operation for the * verification to be secure: it is possible to craft signatures that * recover to arbitrary addresses for non-hashed data. A safe way to ensure * this is by receiving a hash of the original message (which may otherwise * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it. * * Documentation for signature generation: * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js] * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers] */ function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError, bytes32) { if (signature.length == 65) { bytes32 r; bytes32 s; uint8 v; // ecrecover takes the signature parameters, and the only way to get them // currently is to use assembly. /// @solidity memory-safe-assembly assembly { r := mload(add(signature, 0x20)) s := mload(add(signature, 0x40)) v := byte(0, mload(add(signature, 0x60))) } return tryRecover(hash, v, r, s); } else { return (address(0), RecoverError.InvalidSignatureLength, bytes32(signature.length)); } } /** * @dev Returns the address that signed a hashed message (`hash`) with * `signature`. This address can then be used for verification purposes. * * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures: * this function rejects them by requiring the `s` value to be in the lower * half order, and the `v` value to be either 27 or 28. * * IMPORTANT: `hash` _must_ be the result of a hash operation for the * verification to be secure: it is possible to craft signatures that * recover to arbitrary addresses for non-hashed data. A safe way to ensure * this is by receiving a hash of the original message (which may otherwise * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it. */ function recover(bytes32 hash, bytes memory signature) internal pure returns (address) { (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, signature); _throwError(error, errorArg); return recovered; } /** * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately. * * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures] */ function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError, bytes32) { unchecked { bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff); // We do not check for an overflow here since the shift operation results in 0 or 1. uint8 v = uint8((uint256(vs) >> 255) + 27); return tryRecover(hash, v, r, s); } } /** * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately. */ function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) { (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, r, vs); _throwError(error, errorArg); return recovered; } /** * @dev Overload of {ECDSA-tryRecover} that receives the `v`, * `r` and `s` signature fields separately. */ function tryRecover( bytes32 hash, uint8 v, bytes32 r, bytes32 s ) internal pure returns (address, RecoverError, bytes32) { // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most // signatures from current libraries generate a unique signature with an s-value in the lower half order. // // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept // these malleable signatures as well. if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) { return (address(0), RecoverError.InvalidSignatureS, s); } // If the signature is valid (and not malleable), return the signer address address signer = ecrecover(hash, v, r, s); if (signer == address(0)) { return (address(0), RecoverError.InvalidSignature, bytes32(0)); } return (signer, RecoverError.NoError, bytes32(0)); } /** * @dev Overload of {ECDSA-recover} that receives the `v`, * `r` and `s` signature fields separately. */ function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) { (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, v, r, s); _throwError(error, errorArg); return recovered; } /** * @dev Optionally reverts with the corresponding custom error according to the `error` argument provided. */ function _throwError(RecoverError error, bytes32 errorArg) private pure { if (error == RecoverError.NoError) { return; // no error: do nothing } else if (error == RecoverError.InvalidSignature) { revert ECDSAInvalidSignature(); } else if (error == RecoverError.InvalidSignatureLength) { revert ECDSAInvalidSignatureLength(uint256(errorArg)); } else if (error == RecoverError.InvalidSignatureS) { revert ECDSAInvalidSignatureS(errorArg); } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address pair); function getPair(address tokenA, address tokenB) external view returns (address pair); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; interface IDEXPair { function token0() external view returns (address); function token1() external view returns (address); function sync() external; function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function getReserves() external view returns ( uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast ); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.24; interface IDEXRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) external pure returns (uint256 amountOut); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); function decimals() external view returns (uint8); function withdraw(uint) external; // for WETH event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); }
{ "evmVersion": "istanbul", "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address payable","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[],"name":"ECDSAInvalidSignature","type":"error"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"name":"ECDSAInvalidSignatureLength","type":"error"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"ECDSAInvalidSignatureS","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"INVALID_ADDRESS","type":"error"},{"inputs":[],"name":"INVALID_SIGNATURE","type":"error"},{"inputs":[],"name":"INVALID_TX","type":"error"},{"inputs":[],"name":"NOT_AUTHORIZED","type":"error"},{"inputs":[],"name":"ORDER_ALREADY_EXECUTED","type":"error"},{"inputs":[],"name":"ORDER_EXPIRED","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"Derisked","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"userWallet","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"signatureDeadline","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"derisk","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeCollector","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"feesPerTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userWallet","type":"address"}],"name":"getFeesBps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExecutor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"lastExecutedNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"executor","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setExecutor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_feeCollector","type":"address"}],"name":"setFeeCollector","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee1","type":"uint256"},{"internalType":"uint256","name":"_fee2","type":"uint256"},{"internalType":"uint256","name":"_fee3","type":"uint256"},{"internalType":"uint256","name":"_fee4","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_stakingContract","type":"address"}],"name":"setStakingContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tiers1","type":"uint256"},{"internalType":"uint256","name":"_tiers2","type":"uint256"},{"internalType":"uint256","name":"_tiers3","type":"uint256"}],"name":"setTiers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tiers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60e06040526a0108b2a2c280290940000060809081526934f086f3b33b6840000060a05269152d02c7e14af680000060c052620000419060059060036200018e565b506040805160808101825260008152601960208201526032918101919091526064606082015262000077906008906004620001dc565b50604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f247d881dfa561f1c04d82a0087b34db92ea2ca85aee326996cb15321182a5fe2918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120600c553480156200012557600080fd5b5060405162001c1b38038062001c1b833981016040819052620001489162000229565b600080546001600160a01b039092166001600160a01b03199283168117825560018054909316178255338152600260205260409020805460ff191690911790556200025b565b8260038101928215620001ca579160200282015b82811115620001ca57825182906001600160581b0316905591602001919060010190620001a2565b50620001d892915062000212565b5090565b8260048101928215620001ca579160200282015b82811115620001ca578251829060ff16905591602001919060010190620001f0565b5b80821115620001d8576000815560010162000213565b6000602082840312156200023c57600080fd5b81516001600160a01b03811681146200025457600080fd5b9392505050565b6119b0806200026b6000396000f3fe6080604052600436106101025760003560e01c80638da5cb5b11610095578063c415b95c11610064578063c415b95c146102c5578063d8b7d090146102e5578063debfda301461031d578063e5361f9d1461035d578063ee99205c1461037d57600080fd5b80638da5cb5b1461022d5780639dd373b914610265578063a42dce8014610285578063a9177447146102a557600080fd5b806330adf81f116100d157806330adf81f146101a35780633644e515146101d7578063372a6fd6146101ed5780636fcba3771461020d57600080fd5b8063039af9eb1461010e5780630f8343e51461014157806313af4035146101635780631e1bff3f1461018357600080fd5b3661010957005b600080fd5b34801561011a57600080fd5b5061012e6101293660046115a4565b61039d565b6040519081526020015b60405180910390f35b34801561014d57600080fd5b5061016161015c3660046115bd565b6103b4565b005b34801561016f57600080fd5b5061016161017e366004611601565b610442565b34801561018f57600080fd5b5061016161019e366004611633565b6104b6565b3480156101af57600080fd5b5061012e7fae7d7b38c175e37211baf7db08eb8cc01ea629e40d5ee646eccd14c880ede74381565b3480156101e357600080fd5b5061012e600c5481565b3480156101f957600080fd5b5061016161020836600461166c565b61050c565b34801561021957600080fd5b5061016161022836600461172a565b61088d565b34801561023957600080fd5b5060005461024d906001600160a01b031681565b6040516001600160a01b039091168152602001610138565b34801561027157600080fd5b50610161610280366004611601565b610971565b34801561029157600080fd5b506101616102a0366004611601565b6109be565b3480156102b157600080fd5b5061012e6102c03660046115a4565b610a32565b3480156102d157600080fd5b5060015461024d906001600160a01b031681565b3480156102f157600080fd5b5061012e61030036600461175c565b600360209081526000928352604080842090915290825290205481565b34801561032957600080fd5b5061034d610338366004611601565b60026020526000908152604090205460ff1681565b6040519015158152602001610138565b34801561036957600080fd5b5061012e610378366004611601565b610a42565b34801561038957600080fd5b5060045461024d906001600160a01b031681565b600581600381106103ad57600080fd5b0154905081565b6000546001600160a01b031633146103df57604051633d83866f60e01b815260040160405180910390fd5b604051806060016040528084670de0b6b3a76400006103fe91906117a0565b815260200161041584670de0b6b3a76400006117a0565b815260200161042c83670de0b6b3a76400006117a0565b905261043c906005906003611524565b50505050565b6001600160a01b03811661046957604051635963709b60e01b815260040160405180910390fd5b6000546001600160a01b0316331461049457604051633d83866f60e01b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146104e157604051633d83866f60e01b815260040160405180910390fd5b6001600160a01b03919091166000908152600260205260409020805460ff1916911515919091179055565b6000805a61051c906161a86117b7565b9050336001600160a01b038b16146106fd576105383a826117a0565b6001600160a01b03808c166000908152600360209081526040808320938e168352929052205490925088116105805760405163e484eee160e01b815260040160405180910390fd5b3360009081526002602052604090205460ff166105b057604051633d83866f60e01b815260040160405180910390fd5b428710156105d157604051637811aa5560e01b815260040160405180910390fd5b600c54604080517fae7d7b38c175e37211baf7db08eb8cc01ea629e40d5ee646eccd14c880ede74360208201526001600160a01b03808e1692820192909252908b166060820152608081018a905260a081018990526000919060c0016040516020818303038152906040528051906020012060405160200161066a92919061190160f01b81526002810192909252602282015260420190565b60405160208183030381529060405280519060200120905060006106c686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508693925050610b9b9050565b90508b6001600160a01b0316816001600160a01b0316146106fa57604051631468054760e31b815260040160405180910390fd5b50505b6040805160028082526060820183526000926020830190803683370190505090508981600081518110610732576107326117ca565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061077a5761077a6117ca565b60200260200101906001600160a01b031690816001600160a01b0316815250506107a68787838e610bc7565b60006127106107b48d610a42565b6107be90476117a0565b6107c891906117e0565b90506107e96107d785836117b7565b6001546001600160a01b031690610dfc565b6107fc6001600160a01b038d1647610dfc565b6001600160a01b03808d166000908152600360209081526040808320938f1683529290528190208b9055517fb6c060b65b1283fe3779bdf4e0932572fc23896559a2f20ba99e1995a6cb4ff890610877908e908e908e906001600160a01b039384168152919092166020820152604081019190915260600190565b60405180910390a1505050505050505050505050565b6000546001600160a01b031633146108b857604051633d83866f60e01b815260040160405180910390fd5b6101f484111580156108cc57506101f48311155b80156108da57506101f48211155b80156108e857506101f48111155b6109395760405162461bcd60e51b815260206004820152601e60248201527f46656573206d757374206265206c657373207468616e2035303020627073000060448201526064015b60405180910390fd5b604051806080016040528085815260200184815260200183815260200182815250600890600461096a929190611562565b5050505050565b6000546001600160a01b0316331461099c57604051633d83866f60e01b815260040160405180910390fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166109e557604051635963709b60e01b815260040160405180910390fd5b6000546001600160a01b03163314610a1057604051633d83866f60e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600881600481106103ad57600080fd5b6040516370a0823160e01b81526001600160a01b038216600482015260009081907309675e24ca1eb06023451ac8088eca1040f47585906370a0823190602401602060405180830381865afa158015610a9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac39190611802565b6004549091506001600160a01b031615610b545760048054604051631676539160e01b81526001600160a01b0386811693820193909352911690631676539190602401602060405180830381865afa158015610b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b479190611802565b610b5190826117b7565b90505b600554811115610b6c57600860005b01549392505050565b600654811115610b7f5760086001610b63565b600754811115610b925760086002610b63565b60086003610b63565b600080600080610bab8686610e98565b925092509250610bbb8282610ee5565b50909150505b92915050565b6000735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f6001600160a01b031663e6a4390584600081518110610bff57610bff6117ca565b602002602001015185600181518110610c1a57610c1a6117ca565b60200260200101516040518363ffffffff1660e01b8152600401610c549291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015610c71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c95919061181b565b9050610cbd83600081518110610cad57610cad6117ca565b6020026020010151838388610fa2565b610cc783826110bc565b6040516370a0823160e01b815230600482015260009073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a0823190602401602060405180830381865afa158015610d19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3d9190611802565b905084811015610d8f5760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e545f4f55545055545f414d4f554e540000000000006044820152606401610930565b604051632e1a7d4d60e01b81526004810182905273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290632e1a7d4d90602401600060405180830381600087803b158015610ddc57600080fd5b505af1158015610df0573d6000803e3d6000fd5b50505050505050505050565b80471015610e1f5760405163cd78605960e01b8152306004820152602401610930565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610e6c576040519150601f19603f3d011682016040523d82523d6000602084013e610e71565b606091505b5050905080610e9357604051630a12f52160e11b815260040160405180910390fd5b505050565b60008060008351604103610ed25760208401516040850151606086015160001a610ec488828585611387565b955095509550505050610ede565b50508151600091506002905b9250925092565b6000826003811115610ef957610ef9611838565b03610f02575050565b6001826003811115610f1657610f16611838565b03610f345760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610f4857610f48611838565b03610f695760405163fce698f760e01b815260048101829052602401610930565b6003826003811115610f7d57610f7d611838565b03610f9e576040516335e2f38360e21b815260048101829052602401610930565b5050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17905291516000928392908816916110069190611872565b6000604051808303816000865af19150503d8060008114611043576040519150601f19603f3d011682016040523d82523d6000602084013e611048565b606091505b5091509150818015611072575080511580611072575080806020019051810190611072919061188e565b6110b45760405162461bcd60e51b81526020600482015260136024820152721d1c985b9cd9995c919c9bdb4819985a5b1959606a1b6044820152606401610930565b505050505050565b60005b600183516110cd91906118ab565b811015610e93576000808483815181106110e9576110e96117ca565b6020026020010151858460016110ff91906117b7565b8151811061110f5761110f6117ca565b60200260200101519150915060006111278383611456565b509050600080600080886001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561116e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119291906118da565b506001600160701b031691506001600160701b03169150600080866001600160a01b0316896001600160a01b0316146111cc5782846111cf565b83835b6040516370a0823160e01b81526001600160a01b038e8116600483015292945090925083918b16906370a0823190602401602060405180830381865afa15801561121d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112419190611802565b61124b91906118ab565b604051630153543560e21b8152600481018290526024810184905260448101839052909650737a250d5630b4cf539739df2c5dacb4c659f2488d9063054d50d490606401602060405180830381865afa1580156112ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d09190611802565b945050505050600080846001600160a01b0316876001600160a01b0316146112fa578260006112fe565b6000835b6040805160008152602081019182905263022c0d9f60e01b90915291935091506001600160a01b038a169063022c0d9f90611342908590859030906024810161192a565b600060405180830381600087803b15801561135c57600080fd5b505af1158015611370573d6000803e3d6000fd5b5050600190990198506110bf975050505050505050565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156113c2575060009150600390508261144c565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611416573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166114425750600092506001915082905061144c565b9250600091508190505b9450945094915050565b600080826001600160a01b0316846001600160a01b0316036114b05760405162461bcd60e51b81526020600482015260136024820152724944454e544943414c5f41444452455353455360681b6044820152606401610930565b826001600160a01b0316846001600160a01b0316106114d05782846114d3565b83835b90925090506001600160a01b03821661151d5760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610930565b9250929050565b8260038101928215611552579160200282015b82811115611552578251825591602001919060010190611537565b5061155e92915061158f565b5090565b82600481019282156115525791602002820182811115611552578251825591602001919060010190611537565b5b8082111561155e5760008155600101611590565b6000602082840312156115b657600080fd5b5035919050565b6000806000606084860312156115d257600080fd5b505081359360208301359350604090920135919050565b6001600160a01b03811681146115fe57600080fd5b50565b60006020828403121561161357600080fd5b813561161e816115e9565b9392505050565b80151581146115fe57600080fd5b6000806040838503121561164657600080fd5b8235611651816115e9565b9150602083013561166181611625565b809150509250929050565b60008060008060008060008060e0898b03121561168857600080fd5b8835611693816115e9565b975060208901356116a3816115e9565b965060408901359550606089013594506080890135935060a0890135925060c089013567ffffffffffffffff808211156116dc57600080fd5b818b0191508b601f8301126116f057600080fd5b8135818111156116ff57600080fd5b8c602082850101111561171157600080fd5b6020830194508093505050509295985092959890939650565b6000806000806080858703121561174057600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561176f57600080fd5b823561177a816115e9565b91506020830135611661816115e9565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610bc157610bc161178a565b80820180821115610bc157610bc161178a565b634e487b7160e01b600052603260045260246000fd5b6000826117fd57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561181457600080fd5b5051919050565b60006020828403121561182d57600080fd5b815161161e816115e9565b634e487b7160e01b600052602160045260246000fd5b60005b83811015611869578181015183820152602001611851565b50506000910152565b6000825161188481846020870161184e565b9190910192915050565b6000602082840312156118a057600080fd5b815161161e81611625565b81810381811115610bc157610bc161178a565b80516001600160701b03811681146118d557600080fd5b919050565b6000806000606084860312156118ef57600080fd5b6118f8846118be565b9250611906602085016118be565b9150604084015163ffffffff8116811461191f57600080fd5b809150509250925092565b84815283602082015260018060a01b038316604082015260806060820152600082518060808401526119638160a085016020870161184e565b601f01601f19169190910160a0019594505050505056fea2646970667358221220794a26c084f454a165a4fadc9d21dc17168f2c32cc3bf94664346e7632f87f2364736f6c6343000818003300000000000000000000000084ba2321d46814fb1aa69a7b71882efea50f700c
Deployed Bytecode
0x6080604052600436106101025760003560e01c80638da5cb5b11610095578063c415b95c11610064578063c415b95c146102c5578063d8b7d090146102e5578063debfda301461031d578063e5361f9d1461035d578063ee99205c1461037d57600080fd5b80638da5cb5b1461022d5780639dd373b914610265578063a42dce8014610285578063a9177447146102a557600080fd5b806330adf81f116100d157806330adf81f146101a35780633644e515146101d7578063372a6fd6146101ed5780636fcba3771461020d57600080fd5b8063039af9eb1461010e5780630f8343e51461014157806313af4035146101635780631e1bff3f1461018357600080fd5b3661010957005b600080fd5b34801561011a57600080fd5b5061012e6101293660046115a4565b61039d565b6040519081526020015b60405180910390f35b34801561014d57600080fd5b5061016161015c3660046115bd565b6103b4565b005b34801561016f57600080fd5b5061016161017e366004611601565b610442565b34801561018f57600080fd5b5061016161019e366004611633565b6104b6565b3480156101af57600080fd5b5061012e7fae7d7b38c175e37211baf7db08eb8cc01ea629e40d5ee646eccd14c880ede74381565b3480156101e357600080fd5b5061012e600c5481565b3480156101f957600080fd5b5061016161020836600461166c565b61050c565b34801561021957600080fd5b5061016161022836600461172a565b61088d565b34801561023957600080fd5b5060005461024d906001600160a01b031681565b6040516001600160a01b039091168152602001610138565b34801561027157600080fd5b50610161610280366004611601565b610971565b34801561029157600080fd5b506101616102a0366004611601565b6109be565b3480156102b157600080fd5b5061012e6102c03660046115a4565b610a32565b3480156102d157600080fd5b5060015461024d906001600160a01b031681565b3480156102f157600080fd5b5061012e61030036600461175c565b600360209081526000928352604080842090915290825290205481565b34801561032957600080fd5b5061034d610338366004611601565b60026020526000908152604090205460ff1681565b6040519015158152602001610138565b34801561036957600080fd5b5061012e610378366004611601565b610a42565b34801561038957600080fd5b5060045461024d906001600160a01b031681565b600581600381106103ad57600080fd5b0154905081565b6000546001600160a01b031633146103df57604051633d83866f60e01b815260040160405180910390fd5b604051806060016040528084670de0b6b3a76400006103fe91906117a0565b815260200161041584670de0b6b3a76400006117a0565b815260200161042c83670de0b6b3a76400006117a0565b905261043c906005906003611524565b50505050565b6001600160a01b03811661046957604051635963709b60e01b815260040160405180910390fd5b6000546001600160a01b0316331461049457604051633d83866f60e01b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146104e157604051633d83866f60e01b815260040160405180910390fd5b6001600160a01b03919091166000908152600260205260409020805460ff1916911515919091179055565b6000805a61051c906161a86117b7565b9050336001600160a01b038b16146106fd576105383a826117a0565b6001600160a01b03808c166000908152600360209081526040808320938e168352929052205490925088116105805760405163e484eee160e01b815260040160405180910390fd5b3360009081526002602052604090205460ff166105b057604051633d83866f60e01b815260040160405180910390fd5b428710156105d157604051637811aa5560e01b815260040160405180910390fd5b600c54604080517fae7d7b38c175e37211baf7db08eb8cc01ea629e40d5ee646eccd14c880ede74360208201526001600160a01b03808e1692820192909252908b166060820152608081018a905260a081018990526000919060c0016040516020818303038152906040528051906020012060405160200161066a92919061190160f01b81526002810192909252602282015260420190565b60405160208183030381529060405280519060200120905060006106c686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508693925050610b9b9050565b90508b6001600160a01b0316816001600160a01b0316146106fa57604051631468054760e31b815260040160405180910390fd5b50505b6040805160028082526060820183526000926020830190803683370190505090508981600081518110610732576107326117ca565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061077a5761077a6117ca565b60200260200101906001600160a01b031690816001600160a01b0316815250506107a68787838e610bc7565b60006127106107b48d610a42565b6107be90476117a0565b6107c891906117e0565b90506107e96107d785836117b7565b6001546001600160a01b031690610dfc565b6107fc6001600160a01b038d1647610dfc565b6001600160a01b03808d166000908152600360209081526040808320938f1683529290528190208b9055517fb6c060b65b1283fe3779bdf4e0932572fc23896559a2f20ba99e1995a6cb4ff890610877908e908e908e906001600160a01b039384168152919092166020820152604081019190915260600190565b60405180910390a1505050505050505050505050565b6000546001600160a01b031633146108b857604051633d83866f60e01b815260040160405180910390fd5b6101f484111580156108cc57506101f48311155b80156108da57506101f48211155b80156108e857506101f48111155b6109395760405162461bcd60e51b815260206004820152601e60248201527f46656573206d757374206265206c657373207468616e2035303020627073000060448201526064015b60405180910390fd5b604051806080016040528085815260200184815260200183815260200182815250600890600461096a929190611562565b5050505050565b6000546001600160a01b0316331461099c57604051633d83866f60e01b815260040160405180910390fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166109e557604051635963709b60e01b815260040160405180910390fd5b6000546001600160a01b03163314610a1057604051633d83866f60e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600881600481106103ad57600080fd5b6040516370a0823160e01b81526001600160a01b038216600482015260009081907309675e24ca1eb06023451ac8088eca1040f47585906370a0823190602401602060405180830381865afa158015610a9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac39190611802565b6004549091506001600160a01b031615610b545760048054604051631676539160e01b81526001600160a01b0386811693820193909352911690631676539190602401602060405180830381865afa158015610b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b479190611802565b610b5190826117b7565b90505b600554811115610b6c57600860005b01549392505050565b600654811115610b7f5760086001610b63565b600754811115610b925760086002610b63565b60086003610b63565b600080600080610bab8686610e98565b925092509250610bbb8282610ee5565b50909150505b92915050565b6000735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f6001600160a01b031663e6a4390584600081518110610bff57610bff6117ca565b602002602001015185600181518110610c1a57610c1a6117ca565b60200260200101516040518363ffffffff1660e01b8152600401610c549291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015610c71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c95919061181b565b9050610cbd83600081518110610cad57610cad6117ca565b6020026020010151838388610fa2565b610cc783826110bc565b6040516370a0823160e01b815230600482015260009073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a0823190602401602060405180830381865afa158015610d19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3d9190611802565b905084811015610d8f5760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e545f4f55545055545f414d4f554e540000000000006044820152606401610930565b604051632e1a7d4d60e01b81526004810182905273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290632e1a7d4d90602401600060405180830381600087803b158015610ddc57600080fd5b505af1158015610df0573d6000803e3d6000fd5b50505050505050505050565b80471015610e1f5760405163cd78605960e01b8152306004820152602401610930565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610e6c576040519150601f19603f3d011682016040523d82523d6000602084013e610e71565b606091505b5050905080610e9357604051630a12f52160e11b815260040160405180910390fd5b505050565b60008060008351604103610ed25760208401516040850151606086015160001a610ec488828585611387565b955095509550505050610ede565b50508151600091506002905b9250925092565b6000826003811115610ef957610ef9611838565b03610f02575050565b6001826003811115610f1657610f16611838565b03610f345760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610f4857610f48611838565b03610f695760405163fce698f760e01b815260048101829052602401610930565b6003826003811115610f7d57610f7d611838565b03610f9e576040516335e2f38360e21b815260048101829052602401610930565b5050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17905291516000928392908816916110069190611872565b6000604051808303816000865af19150503d8060008114611043576040519150601f19603f3d011682016040523d82523d6000602084013e611048565b606091505b5091509150818015611072575080511580611072575080806020019051810190611072919061188e565b6110b45760405162461bcd60e51b81526020600482015260136024820152721d1c985b9cd9995c919c9bdb4819985a5b1959606a1b6044820152606401610930565b505050505050565b60005b600183516110cd91906118ab565b811015610e93576000808483815181106110e9576110e96117ca565b6020026020010151858460016110ff91906117b7565b8151811061110f5761110f6117ca565b60200260200101519150915060006111278383611456565b509050600080600080886001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561116e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119291906118da565b506001600160701b031691506001600160701b03169150600080866001600160a01b0316896001600160a01b0316146111cc5782846111cf565b83835b6040516370a0823160e01b81526001600160a01b038e8116600483015292945090925083918b16906370a0823190602401602060405180830381865afa15801561121d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112419190611802565b61124b91906118ab565b604051630153543560e21b8152600481018290526024810184905260448101839052909650737a250d5630b4cf539739df2c5dacb4c659f2488d9063054d50d490606401602060405180830381865afa1580156112ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d09190611802565b945050505050600080846001600160a01b0316876001600160a01b0316146112fa578260006112fe565b6000835b6040805160008152602081019182905263022c0d9f60e01b90915291935091506001600160a01b038a169063022c0d9f90611342908590859030906024810161192a565b600060405180830381600087803b15801561135c57600080fd5b505af1158015611370573d6000803e3d6000fd5b5050600190990198506110bf975050505050505050565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156113c2575060009150600390508261144c565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611416573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166114425750600092506001915082905061144c565b9250600091508190505b9450945094915050565b600080826001600160a01b0316846001600160a01b0316036114b05760405162461bcd60e51b81526020600482015260136024820152724944454e544943414c5f41444452455353455360681b6044820152606401610930565b826001600160a01b0316846001600160a01b0316106114d05782846114d3565b83835b90925090506001600160a01b03821661151d5760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610930565b9250929050565b8260038101928215611552579160200282015b82811115611552578251825591602001919060010190611537565b5061155e92915061158f565b5090565b82600481019282156115525791602002820182811115611552578251825591602001919060010190611537565b5b8082111561155e5760008155600101611590565b6000602082840312156115b657600080fd5b5035919050565b6000806000606084860312156115d257600080fd5b505081359360208301359350604090920135919050565b6001600160a01b03811681146115fe57600080fd5b50565b60006020828403121561161357600080fd5b813561161e816115e9565b9392505050565b80151581146115fe57600080fd5b6000806040838503121561164657600080fd5b8235611651816115e9565b9150602083013561166181611625565b809150509250929050565b60008060008060008060008060e0898b03121561168857600080fd5b8835611693816115e9565b975060208901356116a3816115e9565b965060408901359550606089013594506080890135935060a0890135925060c089013567ffffffffffffffff808211156116dc57600080fd5b818b0191508b601f8301126116f057600080fd5b8135818111156116ff57600080fd5b8c602082850101111561171157600080fd5b6020830194508093505050509295985092959890939650565b6000806000806080858703121561174057600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561176f57600080fd5b823561177a816115e9565b91506020830135611661816115e9565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610bc157610bc161178a565b80820180821115610bc157610bc161178a565b634e487b7160e01b600052603260045260246000fd5b6000826117fd57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561181457600080fd5b5051919050565b60006020828403121561182d57600080fd5b815161161e816115e9565b634e487b7160e01b600052602160045260246000fd5b60005b83811015611869578181015183820152602001611851565b50506000910152565b6000825161188481846020870161184e565b9190910192915050565b6000602082840312156118a057600080fd5b815161161e81611625565b81810381811115610bc157610bc161178a565b80516001600160701b03811681146118d557600080fd5b919050565b6000806000606084860312156118ef57600080fd5b6118f8846118be565b9250611906602085016118be565b9150604084015163ffffffff8116811461191f57600080fd5b809150509250925092565b84815283602082015260018060a01b038316604082015260806060820152600082518060808401526119638160a085016020870161184e565b601f01601f19169190910160a0019594505050505056fea2646970667358221220794a26c084f454a165a4fadc9d21dc17168f2c32cc3bf94664346e7632f87f2364736f6c63430008180033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000084ba2321d46814fb1aa69a7b71882efea50f700c
-----Decoded View---------------
Arg [0] : _owner (address): 0x84Ba2321d46814Fb1AA69a7B71882eFEA50f700c
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000084ba2321d46814fb1aa69a7b71882efea50f700c
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.