Overview
CRO Balance
0 CRO
CRO Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 119 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Swap CRO For Tok... | 17162020 | 8 hrs ago | IN | 45.2 CRO | 0.8577728 | ||||
Swap CRO For Tok... | 17152922 | 23 hrs ago | IN | 4 CRO | 0.78059365 | ||||
Swap CRO For Tok... | 17150246 | 27 hrs ago | IN | 5.8 CRO | 0.78059365 | ||||
Swap CRO For Tok... | 17150143 | 27 hrs ago | IN | 15 CRO | 0.8577728 | ||||
Swap CRO For Tok... | 17150117 | 27 hrs ago | IN | 10.8 CRO | 0.78059365 | ||||
Swap Token For T... | 17147928 | 31 hrs ago | IN | 0 CRO | 1.85317325 | ||||
Swap Token For T... | 17147830 | 31 hrs ago | IN | 0 CRO | 1.85317325 | ||||
Swap CRO For Tok... | 17147630 | 31 hrs ago | IN | 8.9 CRO | 0.86694865 | ||||
Swap CRO For Tok... | 17147550 | 31 hrs ago | IN | 15 CRO | 0.86694865 | ||||
Swap CRO For Tok... | 17146626 | 33 hrs ago | IN | 7 CRO | 0.8577728 | ||||
Swap Token For C... | 17146620 | 33 hrs ago | IN | 0 CRO | 1.0863055 | ||||
Swap CRO For Tok... | 17145668 | 34 hrs ago | IN | 125 CRO | 0.86643871 | ||||
Swap CRO For Tok... | 17135617 | 2 days ago | IN | 10 CRO | 0.8577728 | ||||
Swap CRO For Tok... | 17131505 | 2 days ago | IN | 10 CRO | 0.8577728 | ||||
Swap Token For C... | 17131501 | 2 days ago | IN | 0 CRO | 1.0862449 | ||||
Swap CRO For Tok... | 17129652 | 2 days ago | IN | 100 CRO | 0.8577728 | ||||
Swap Token For C... | 17129595 | 2 days ago | IN | 0 CRO | 1.41146467 | ||||
Swap CRO For Tok... | 17127997 | 2 days ago | IN | 15 CRO | 0.8577728 | ||||
Swap Token For C... | 17127985 | 2 days ago | IN | 0 CRO | 1.0862449 | ||||
Swap Token For C... | 17125792 | 2 days ago | IN | 0 CRO | 1.08598283 | ||||
Swap CRO For Tok... | 17125101 | 2 days ago | IN | 17 CRO | 1.26976695 | ||||
Swap CRO For Tok... | 17118199 | 3 days ago | IN | 18 CRO | 0.8577728 | ||||
Swap Token For C... | 17118193 | 3 days ago | IN | 0 CRO | 1.0862449 | ||||
Swap CRO For Tok... | 17109056 | 3 days ago | IN | 50 CRO | 0.8577728 | ||||
Swap CRO For Tok... | 17100735 | 4 days ago | IN | 50 CRO | 1.18341195 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
17162020 | 8 hrs ago | 44.974 CRO | ||||
17162020 | 8 hrs ago | 0.226 CRO | ||||
17152922 | 23 hrs ago | 3.98 CRO | ||||
17152922 | 23 hrs ago | 0.02 CRO | ||||
17150246 | 27 hrs ago | 5.771 CRO | ||||
17150246 | 27 hrs ago | 0.029 CRO | ||||
17150143 | 27 hrs ago | 14.925 CRO | ||||
17150143 | 27 hrs ago | 0.075 CRO | ||||
17150117 | 27 hrs ago | 10.746 CRO | ||||
17150117 | 27 hrs ago | 0.054 CRO | ||||
17147630 | 31 hrs ago | 8.8555 CRO | ||||
17147630 | 31 hrs ago | 0.0445 CRO | ||||
17147550 | 31 hrs ago | 14.925 CRO | ||||
17147550 | 31 hrs ago | 0.075 CRO | ||||
17146626 | 33 hrs ago | 6.965 CRO | ||||
17146626 | 33 hrs ago | 0.035 CRO | ||||
17145668 | 34 hrs ago | 124.375 CRO | ||||
17145668 | 34 hrs ago | 0.625 CRO | ||||
17135617 | 2 days ago | 9.95 CRO | ||||
17135617 | 2 days ago | 0.05 CRO | ||||
17131505 | 2 days ago | 9.95 CRO | ||||
17131505 | 2 days ago | 0.05 CRO | ||||
17129652 | 2 days ago | 99.5 CRO | ||||
17129652 | 2 days ago | 0.5 CRO | ||||
17127997 | 2 days ago | 14.925 CRO |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
SwapPro
Compiler Version
v0.8.26+commit.8a97fa7a
Optimization Enabled:
Yes with 200 runs
Other Settings:
london EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
//SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address); function getPair(address tokenA, address tokenB) external returns (address); } interface IPair { function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns ( uint112, uint112, uint32 ); } interface IDEXRouter { function factory() external pure returns (address); function WETH() external pure returns (address); 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 getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external view returns (uint256); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory); } interface IWCRO is IERC20 { function deposit() external payable; function withdraw(uint256 wad) external; } interface IStaking { function clearVolume() external; } struct Volume { address user; uint256 volume; } contract SwapPro is Ownable { address public constant CUSDC = 0xc21223249CA28397B4B6541dfFaEcC539BfF0c59; address public constant CUSDT = 0x66e428c3f67a68878562e79A0234c1F83c208770; address public constant WCRO = 0x5C7F8A570d578ED84E63fdFA7b1eE72dEae1AE23; address public constant ARY = 0x41bc026dABe978bc2FAfeA1850456511ca4B01bc; address public constant MERY = 0x3b41B27E74Dd366CE27cB389dc7877D4e1516d4d; address public constant DEXROUTER = 0x145863Eb42Cf62847A6Ca784e6416C1682b1b2Ae; address public constant DEXFACTORY = 0x3B44B2a187a7b3824131F8db5a74194D0a42Fc15; address public feeReceiver; address public croFeeReceiver; uint256 public feePercent; bool public competition_started = false; mapping(address => uint256) public userVolume; mapping(address => bool) isExistAddress; address[] public addresses; // Mapping to keep track of approved tokens mapping(address => bool) private approvedTokens; IDEXFactory factory; IDEXRouter router; IERC20 cusdc; IERC20 cusdt; IERC20 ary; IERC20 mery; IWCRO wcro; IStaking public stakingContract; constructor() Ownable(msg.sender) { factory = IDEXFactory(DEXFACTORY); router = IDEXRouter(DEXROUTER); cusdc = IERC20(CUSDC); cusdt = IERC20(CUSDT); ary = IERC20(ARY); mery = IERC20(MERY); wcro = IWCRO(WCRO); feeReceiver = msg.sender; croFeeReceiver = msg.sender; feePercent = 3; competition_started = false; // Approving default tokens cusdc.approve(DEXROUTER, type(uint256).max); cusdt.approve(DEXROUTER, type(uint256).max); ary.approve(DEXROUTER, type(uint256).max); wcro.approve(DEXROUTER, type(uint256).max); mery.approve(DEXROUTER, type(uint256).max); // Marking default tokens as approved approvedTokens[CUSDC] = true; approvedTokens[CUSDT] = true; approvedTokens[ARY] = true; approvedTokens[MERY] = true; approvedTokens[WCRO] = true; } // Set the staking contract address function setStakingContract(address _stakingContract) external onlyOwner { stakingContract = IStaking(_stakingContract); } // Function to get user volumes function getUserVolumes() external view returns (Volume[] memory) { uint256 n = addresses.length; Volume[] memory volumes = new Volume[](n); // Initialize memory array with fixed size for (uint256 i = 0; i < n; i++) { volumes[i] = Volume(addresses[i], userVolume[addresses[i]]); } return volumes; } // Clear volume records function clearVolume() public onlyOwner { uint256 n = addresses.length; for (uint256 i = 0; i < n; i++) { delete userVolume[addresses[i]]; isExistAddress[addresses[i]] = false; } delete addresses; competition_started = false; // Reset staking contract data if (address(stakingContract) != address(0)) { stakingContract.clearVolume(); } } function stopCompetition() public onlyOwner { competition_started = false; } function startCompetition() public onlyOwner { competition_started = true; } // Function to configure the fee rate and fee receiver function setFeeData( address _feeReceiver, address _croFeeReceiver, uint256 _feePercent ) public onlyOwner { feeReceiver = _feeReceiver; croFeeReceiver = _croFeeReceiver; feePercent = _feePercent; } // Function to handle ARY as a fee regardless of trading pairs function getFee(address fromToken, uint256 feeAmount) private { uint256 halfFee = feeAmount / 2; uint256 remainingFee = feeAmount - halfFee; // Handle odd numbers if (fromToken != ARY) { // Approve fromToken if not already approved if (!approvedTokens[fromToken]) { IERC20(fromToken).approve(address(router), type(uint256).max); approvedTokens[fromToken] = true; } // Define the path from the original token to ARY address[] memory path = new address[](fromToken == WCRO ? 2 : 3); if (fromToken == WCRO) { path[0] = fromToken; path[1] = ARY; } else { path[0] = fromToken; path[1] = WCRO; path[2] = ARY; } // Swap halfFee to ARY and send to feeReceiver router.swapExactTokensForTokensSupportingFeeOnTransferTokens( halfFee, 0, path, feeReceiver, block.timestamp + 1 hours ); // Swap remainingFee to ARY and send to Staking contract or feeReceiver address stakingAddress = address(stakingContract) != address(0) ? address(stakingContract) : feeReceiver; router.swapExactTokensForTokensSupportingFeeOnTransferTokens( remainingFee, 0, path, stakingAddress, block.timestamp + 1 hours ); } else { // Token is already ARY ary.transfer(feeReceiver, halfFee); address stakingAddress = address(stakingContract) != address(0) ? address(stakingContract) : feeReceiver; ary.transfer(stakingAddress, remainingFee); } } // Add user volume function addVolume(address user, uint256 volume) private { if (!isExistAddress[user]) { addresses.push(user); isExistAddress[user] = true; } userVolume[user] += volume; } // Function to swap token for token function swapTokenForToken( address fromToken, address toToken, uint256 amountIn, uint256 amountOutMin ) public { IERC20(fromToken).transferFrom(msg.sender, address(this), amountIn); if (fromToken == ARY && competition_started) { addVolume(msg.sender, amountIn); } uint256 feeAmount = (amountIn * feePercent) / 1000; getFee(fromToken, feeAmount); uint256 amountInAfterFee = amountIn - feeAmount; // Approve fromToken if not already approved if (!approvedTokens[fromToken]) { IERC20(fromToken).approve(address(router), type(uint256).max); approvedTokens[fromToken] = true; } address[] memory path; if (fromToken == WCRO || toToken == WCRO) { path = new address[](2); path[0] = fromToken; path[1] = toToken; } else { path = new address[](3); path[0] = fromToken; path[1] = WCRO; path[2] = toToken; } router.swapExactTokensForTokensSupportingFeeOnTransferTokens( amountInAfterFee, amountOutMin, path, msg.sender, block.timestamp + 1 hours ); // Estimate amountOut for volume tracking if (toToken == ARY && competition_started) { uint256[] memory amountsOut = router.getAmountsOut( amountInAfterFee, path ); uint256 amountOut = amountsOut[amountsOut.length - 1]; addVolume(msg.sender, amountOut); } } // Function to swap CRO for token function swapCROForToken(address toToken, uint256 amountOutMin) public payable { uint256 amountIn = msg.value; uint256 feeAmount = (amountIn * feePercent) / 1000; payable(croFeeReceiver).transfer(feeAmount); address[] memory path = new address[](2); path[0] = WCRO; path[1] = toToken; router.swapExactETHForTokensSupportingFeeOnTransferTokens{ value: amountIn - feeAmount }(amountOutMin, path, msg.sender, block.timestamp + 1 hours); // Estimate amountOut for volume tracking if (toToken == ARY && competition_started) { uint256[] memory amountsOut = router.getAmountsOut( amountIn - feeAmount, path ); uint256 amountOut = amountsOut[1]; addVolume(msg.sender, amountOut); } } // Function to swap token for CRO function swapTokenForCRO( address fromToken, uint256 amountIn, uint256 amountOutMin ) public { if (fromToken == ARY && competition_started) addVolume(msg.sender, amountIn); IERC20(fromToken).transferFrom(msg.sender, address(this), amountIn); uint256 feeAmount = (amountIn * feePercent) / 1000; getFee(fromToken, feeAmount); uint256 amountInAfterFee = amountIn - feeAmount; // Approve fromToken if not already approved if (!approvedTokens[fromToken]) { IERC20(fromToken).approve(address(router), type(uint256).max); approvedTokens[fromToken] = true; } address[] memory path = new address[](2); path[0] = fromToken; path[1] = WCRO; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountInAfterFee, amountOutMin, path, msg.sender, block.timestamp + 1 hours ); } // Function to wrap CRO function deposit() public payable { uint256 amountIn = msg.value; wcro.deposit{value: amountIn}(); wcro.transfer(msg.sender, amountIn); } // Function to unwrap WCRO function withdraw(uint256 wad) public { wcro.transferFrom(msg.sender, address(this), wad); wcro.withdraw(wad); payable(msg.sender).transfer(wad); } receive() external payable {} }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.20; /** * @dev Interface of the ERC-20 standard as defined in the ERC. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the value of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the value of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves a `value` amount of tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 value) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets a `value` amount of tokens as the allowance of `spender` over the * caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 value) external returns (bool); /** * @dev Moves a `value` amount of tokens from `from` to `to` using the * allowance mechanism. `value` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 value) external returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity ^0.8.20; import {Context} from "../utils/Context.sol"; /** * @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); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "remappings": [], "evmVersion": "london" }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"ARY","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CUSDC","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CUSDT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEXFACTORY","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEXROUTER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MERY","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WCRO","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"addresses","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearVolume","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"competition_started","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"croFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"feePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUserVolumes","outputs":[{"components":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"volume","type":"uint256"}],"internalType":"struct Volume[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeReceiver","type":"address"},{"internalType":"address","name":"_croFeeReceiver","type":"address"},{"internalType":"uint256","name":"_feePercent","type":"uint256"}],"name":"setFeeData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_stakingContract","type":"address"}],"name":"setStakingContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingContract","outputs":[{"internalType":"contract IStaking","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startCompetition","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopCompetition","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toToken","type":"address"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"}],"name":"swapCROForToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"}],"name":"swapTokenForCRO","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"address","name":"toToken","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"}],"name":"swapTokenForToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userVolume","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526004805460ff1916905534801561001a57600080fd5b50338061004157604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61004a816104c3565b50600980546001600160a01b0319908116733b44b2a187a7b3824131f8db5a74194d0a42fc1517909155600a8054821660008051602061248b833981519152908117909155600b8054831673c21223249ca28397b4b6541dffaecc539bff0c59908117909155600c805484167366e428c3f67a68878562e79a0234c1f83c208770179055600d805484167341bc026dabe978bc2fafea1850456511ca4b01bc179055600e80548416733b41b27e74dd366ce27cb389dc7877d4e1516d4d179055600f80548416735c7f8a570d578ed84e63fdfa7b1ee72deae1ae23179055600180548416339081179091556002805490941617909255600380556004805460ff1916815560405163095ea7b360e01b815290810191909152600019602482015263095ea7b3906044016020604051808303816000875af1158015610192573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101b69190610513565b50600c5460405163095ea7b360e01b815260008051602061248b833981519152600482015260001960248201526001600160a01b039091169063095ea7b3906044016020604051808303816000875af1158015610217573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061023b9190610513565b50600d5460405163095ea7b360e01b815260008051602061248b833981519152600482015260001960248201526001600160a01b039091169063095ea7b3906044016020604051808303816000875af115801561029c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c09190610513565b50600f5460405163095ea7b360e01b815260008051602061248b833981519152600482015260001960248201526001600160a01b039091169063095ea7b3906044016020604051808303816000875af1158015610321573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103459190610513565b50600e5460405163095ea7b360e01b815260008051602061248b833981519152600482015260001960248201526001600160a01b039091169063095ea7b3906044016020604051808303816000875af11580156103a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ca9190610513565b5060086020527fffe166fa3bd240967bad968aac965dfe056b9ad5291cdb046635183f57dd00fa8054600160ff1991821681179092557faa34793b6cffede8c5b94542b138ce16d9629dc636b672907c71c1855595ccd780548216831790557f8057e431ac715424de6562b4edcca310b629fa48054da10c855f332791b0df5380548216831790557f1edd782f7831be13c949a4239d8904f7a1956a51ff9037d70c9f4b6b774793748054821683179055735c7f8a570d578ed84e63fdfa7b1ee72deae1ae236000527ffc9bc4d5435a4e87b638fa361b86c443304fe768209b3e8d7ccb618c4b2fa2a88054909116909117905561053c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561052557600080fd5b8151801515811461053557600080fd5b9392505050565b611f408061054b6000396000f3fe6080604052600436106101bb5760003560e01c8063a37b9e7f116100ec578063d0e30db01161008a578063d7b7d3f311610064578063d7b7d3f3146104e0578063edf26d9b14610508578063ee99205c14610528578063f2fde38b1461054857600080fd5b8063d0e30db0146104a3578063d16a4010146104ab578063d3e66a9e146104cb57600080fd5b8063ae38a070116100c6578063ae38a07014610411578063afe43b9414610433578063b0befe631461045b578063b3f006741461048357600080fd5b8063a37b9e7f14610392578063a6769ef8146103ba578063ac65334f146103e757600080fd5b80635f0018cd116101595780637c6f8fae116101335780637c6f8fae146103085780637fd6f15c146103305780638da5cb5b146103545780639dd373b91461037257600080fd5b80635f0018cd146102b65780636504fbad146102cb578063715018a6146102f357600080fd5b80632e1a7d4d116101955780632e1a7d4d1461024e57806334060e161461026e57806339bda01c1461028e57806353ac861e146102a357600080fd5b806316214120146101c75780631d470cb1146101e95780631efe5fc21461022e57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101e76101e2366004611b2e565b610568565b005b3480156101f557600080fd5b50610211735c7f8a570d578ed84e63fdfa7b1ee72deae1ae2381565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561023a57600080fd5b50600254610211906001600160a01b031681565b34801561025a57600080fd5b506101e7610269366004611b61565b610818565b34801561027a57600080fd5b506101e7610289366004611b7a565b610923565b34801561029a57600080fd5b506101e7610960565b6101e76102b1366004611bb7565b610a9d565b3480156102c257600080fd5b506101e7610ce8565b3480156102d757600080fd5b506102117366e428c3f67a68878562e79a0234c1f83c20877081565b3480156102ff57600080fd5b506101e7610cfc565b34801561031457600080fd5b50610211733b44b2a187a7b3824131f8db5a74194d0a42fc1581565b34801561033c57600080fd5b5061034660035481565b604051908152602001610225565b34801561036057600080fd5b506000546001600160a01b0316610211565b34801561037e57600080fd5b506101e761038d366004611be1565b610d10565b34801561039e57600080fd5b5061021173c21223249ca28397b4b6541dffaecc539bff0c5981565b3480156103c657600080fd5b506103466103d5366004611be1565b60056020526000908152604090205481565b3480156103f357600080fd5b506004546104019060ff1681565b6040519015158152602001610225565b34801561041d57600080fd5b50610426610d3a565b6040516102259190611c03565b34801561043f57600080fd5b506102117341bc026dabe978bc2fafea1850456511ca4b01bc81565b34801561046757600080fd5b50610211733b41b27e74dd366ce27cb389dc7877d4e1516d4d81565b34801561048f57600080fd5b50600154610211906001600160a01b031681565b6101e7610e64565b3480156104b757600080fd5b506101e76104c6366004611c5b565b610f3b565b3480156104d757600080fd5b506101e76113f2565b3480156104ec57600080fd5b5061021173145863eb42cf62847a6ca784e6416c1682b1b2ae81565b34801561051457600080fd5b50610211610523366004611b61565b611409565b34801561053457600080fd5b50601054610211906001600160a01b031681565b34801561055457600080fd5b506101e7610563366004611be1565b611433565b6001600160a01b0383167341bc026dabe978bc2fafea1850456511ca4b01bc148015610596575060045460ff165b156105a5576105a53383611473565b6040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b038416906323b872dd906064016020604051808303816000875af11580156105f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061c9190611c9d565b5060006103e8600354846106309190611cd5565b61063a9190611cf2565b90506106468482611528565b60006106528285611d14565b6001600160a01b03861660009081526008602052604090205490915060ff1661071257600a5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529086169063095ea7b3906044016020604051808303816000875af11580156106c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ed9190611c9d565b506001600160a01b0385166000908152600860205260409020805460ff191660011790555b604080516002808252606082018352600092602083019080368337019050509050858160008151811061074757610747611d3d565b60200260200101906001600160a01b031690816001600160a01b031681525050735c7f8a570d578ed84e63fdfa7b1ee72deae1ae238160018151811061078f5761078f611d3d565b6001600160a01b039283166020918202929092010152600a541663791ac947838684336107be42610e10611d53565b6040518663ffffffff1660e01b81526004016107de959493929190611dab565b600060405180830381600087803b1580156107f857600080fd5b505af115801561080c573d6000803e3d6000fd5b50505050505050505050565b600f546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561086f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108939190611c9d565b50600f54604051632e1a7d4d60e01b8152600481018390526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b1580156108da57600080fd5b505af11580156108ee573d6000803e3d6000fd5b505060405133925083156108fc02915083906000818181858888f1935050505015801561091f573d6000803e3d6000fd5b5050565b61092b611a63565b600180546001600160a01b039485166001600160a01b0319918216179091556002805493909416921691909117909155600355565b610968611a63565b60075460005b81811015610a0957600560006007838154811061098d5761098d611d3d565b60009182526020808320909101546001600160a01b031683528201929092526040018120819055600780546006918391859081106109cd576109cd611d3d565b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff191691151591909117905560010161096e565b50610a1660076000611ae0565b6004805460ff191690556010546001600160a01b031615610a9a57601060009054906101000a90046001600160a01b03166001600160a01b03166339bda01c6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a8157600080fd5b505af1158015610a95573d6000803e3d6000fd5b505050505b50565b60035434906000906103e890610ab39084611cd5565b610abd9190611cf2565b6002546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015610af8573d6000803e3d6000fd5b50604080516002808252606082018352600092602083019080368337019050509050735c7f8a570d578ed84e63fdfa7b1ee72deae1ae2381600081518110610b4257610b42611d3d565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600181518110610b7657610b76611d3d565b6001600160a01b039283166020918202929092010152600a541663b6f9de95610b9f8486611d14565b868433610bae42610e10611d53565b6040518663ffffffff1660e01b8152600401610bcd9493929190611de7565b6000604051808303818588803b158015610be657600080fd5b505af1158015610bfa573d6000803e3d6000fd5b505050506001600160a01b0386167341bc026dabe978bc2fafea1850456511ca4b01bc1490508015610c2e575060045460ff165b15610a9557600a546000906001600160a01b031663d06ca61f610c518587611d14565b846040518363ffffffff1660e01b8152600401610c6f929190611e1c565b600060405180830381865afa158015610c8c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610cb49190810190611e3d565b9050600081600181518110610ccb57610ccb611d3d565b60200260200101519050610cdf3382611473565b50505050505050565b610cf0611a63565b6004805460ff19169055565b610d04611a63565b610d0e6000611a90565b565b610d18611a63565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b60075460609060008167ffffffffffffffff811115610d5b57610d5b611d27565b604051908082528060200260200182016040528015610da057816020015b6040805180820190915260008082526020820152815260200190600190039081610d795790505b50905060005b82811015610e5d57604051806040016040528060078381548110610dcc57610dcc611d3d565b9060005260206000200160009054906101000a90046001600160a01b03166001600160a01b031681526020016005600060078581548110610e0f57610e0f611d3d565b60009182526020808320909101546001600160a01b0316835282019290925260400190205490528251839083908110610e4a57610e4a611d3d565b6020908102919091010152600101610da6565b5092915050565b600f5460408051630d0e30db60e41b8152905134926001600160a01b03169163d0e30db091849160048082019260009290919082900301818588803b158015610eac57600080fd5b505af1158015610ec0573d6000803e3d6000fd5b5050600f5460405163a9059cbb60e01b8152336004820152602481018690526001600160a01b03909116935063a9059cbb925060440190506020604051808303816000875af1158015610f17573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091f9190611c9d565b6040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b038516906323b872dd906064016020604051808303816000875af1158015610f8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb29190611c9d565b506001600160a01b0384167341bc026dabe978bc2fafea1850456511ca4b01bc148015610fe1575060045460ff165b15610ff057610ff03383611473565b60006103e8600354846110039190611cd5565b61100d9190611cf2565b90506110198582611528565b60006110258285611d14565b6001600160a01b03871660009081526008602052604090205490915060ff166110e557600a5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529087169063095ea7b3906044016020604051808303816000875af115801561109c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c09190611c9d565b506001600160a01b0386166000908152600860205260409020805460ff191660011790555b60606001600160a01b038716735c7f8a570d578ed84e63fdfa7b1ee72deae1ae23148061112e57506001600160a01b038616735c7f8a570d578ed84e63fdfa7b1ee72deae1ae23145b156111c0576040805160028082526060820183529091602083019080368337019050509050868160008151811061116757611167611d3d565b60200260200101906001600160a01b031690816001600160a01b031681525050858160018151811061119b5761119b611d3d565b60200260200101906001600160a01b031690816001600160a01b031681525050611292565b60408051600380825260808201909252906020820160608036833701905050905086816000815181106111f5576111f5611d3d565b60200260200101906001600160a01b031690816001600160a01b031681525050735c7f8a570d578ed84e63fdfa7b1ee72deae1ae238160018151811061123d5761123d611d3d565b60200260200101906001600160a01b031690816001600160a01b031681525050858160028151811061127157611271611d3d565b60200260200101906001600160a01b031690816001600160a01b0316815250505b600a546001600160a01b0316635c11d795838684336112b342610e10611d53565b6040518663ffffffff1660e01b81526004016112d3959493929190611dab565b600060405180830381600087803b1580156112ed57600080fd5b505af1158015611301573d6000803e3d6000fd5b505050506001600160a01b0386167341bc026dabe978bc2fafea1850456511ca4b01bc148015611333575060045460ff165b15610cdf57600a5460405163d06ca61f60e01b81526000916001600160a01b03169063d06ca61f9061136b9086908690600401611e1c565b600060405180830381865afa158015611388573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113b09190810190611e3d565b9050600081600183516113c39190611d14565b815181106113d3576113d3611d3d565b602002602001015190506113e73382611473565b505050505050505050565b6113fa611a63565b6004805460ff19166001179055565b6007818154811061141957600080fd5b6000918252602090912001546001600160a01b0316905081565b61143b611a63565b6001600160a01b03811661146a57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610a9a81611a90565b6001600160a01b03821660009081526006602052604090205460ff166114f7576007805460018082019092557fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319166001600160a01b0385169081179091556000908152600660205260409020805460ff191690911790555b6001600160a01b0382166000908152600560205260408120805483929061151f908490611d53565b90915550505050565b6000611535600283611cf2565b905060006115438284611d14565b90506001600160a01b0384167341bc026dabe978bc2fafea1850456511ca4b01bc14611936576001600160a01b03841660009081526008602052604090205460ff1661162657600a5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529085169063095ea7b3906044016020604051808303816000875af11580156115dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116019190611c9d565b506001600160a01b0384166000908152600860205260409020805460ff191660011790555b60006001600160a01b038516735c7f8a570d578ed84e63fdfa7b1ee72deae1ae2314611653576003611656565b60025b60ff1667ffffffffffffffff81111561167157611671611d27565b60405190808252806020026020018201604052801561169a578160200160208202803683370190505b509050735c7f8a570d578ed84e63fdfa7b1ee72deae1ae22196001600160a01b038616016117435784816000815181106116d6576116d6611d3d565b60200260200101906001600160a01b031690816001600160a01b0316815250507341bc026dabe978bc2fafea1850456511ca4b01bc8160018151811061171e5761171e611d3d565b60200260200101906001600160a01b031690816001600160a01b031681525050611808565b848160008151811061175757611757611d3d565b60200260200101906001600160a01b031690816001600160a01b031681525050735c7f8a570d578ed84e63fdfa7b1ee72deae1ae238160018151811061179f5761179f611d3d565b60200260200101906001600160a01b031690816001600160a01b0316815250507341bc026dabe978bc2fafea1850456511ca4b01bc816002815181106117e7576117e7611d3d565b60200260200101906001600160a01b031690816001600160a01b0316815250505b600a546001546001600160a01b0391821691635c11d79591869160009186911661183442610e10611d53565b6040518663ffffffff1660e01b8152600401611854959493929190611dab565b600060405180830381600087803b15801561186e57600080fd5b505af1158015611882573d6000803e3d6000fd5b5050601054600092506001600160a01b031690506118ab576001546001600160a01b03166118b8565b6010546001600160a01b03165b600a549091506001600160a01b0316635c11d79584600085856118dd42610e10611d53565b6040518663ffffffff1660e01b81526004016118fd959493929190611dab565b600060405180830381600087803b15801561191757600080fd5b505af115801561192b573d6000803e3d6000fd5b505050505050611a5d565b600d5460015460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810185905291169063a9059cbb906044016020604051808303816000875af115801561198b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119af9190611c9d565b506010546000906001600160a01b03166119d4576001546001600160a01b03166119e1565b6010546001600160a01b03165b600d5460405163a9059cbb60e01b81526001600160a01b0380841660048301526024820186905292935091169063a9059cbb906044016020604051808303816000875af1158015611a36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a5a9190611c9d565b50505b50505050565b6000546001600160a01b03163314610d0e5760405163118cdaa760e01b8152336004820152602401611461565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5080546000825590600052602060002090810190610a9a91905b80821115611b0e5760008155600101611afa565b5090565b80356001600160a01b0381168114611b2957600080fd5b919050565b600080600060608486031215611b4357600080fd5b611b4c84611b12565b95602085013595506040909401359392505050565b600060208284031215611b7357600080fd5b5035919050565b600080600060608486031215611b8f57600080fd5b611b9884611b12565b9250611ba660208501611b12565b929592945050506040919091013590565b60008060408385031215611bca57600080fd5b611bd383611b12565b946020939093013593505050565b600060208284031215611bf357600080fd5b611bfc82611b12565b9392505050565b602080825282518282018190526000918401906040840190835b81811015611c5057835180516001600160a01b031684526020908101518185015290930192604090920191600101611c1d565b509095945050505050565b60008060008060808587031215611c7157600080fd5b611c7a85611b12565b9350611c8860208601611b12565b93969395505050506040820135916060013590565b600060208284031215611caf57600080fd5b81518015158114611bfc57600080fd5b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611cec57611cec611cbf565b92915050565b600082611d0f57634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115611cec57611cec611cbf565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b80820180821115611cec57611cec611cbf565b600081518084526020840193506020830160005b82811015611da15781516001600160a01b0316865260209586019590910190600101611d7a565b5093949350505050565b85815284602082015260a060408201526000611dca60a0830186611d66565b6001600160a01b0394909416606083015250608001529392505050565b848152608060208201526000611e006080830186611d66565b6001600160a01b03949094166040830152506060015292915050565b828152604060208201526000611e356040830184611d66565b949350505050565b600060208284031215611e4f57600080fd5b815167ffffffffffffffff811115611e6657600080fd5b8201601f81018413611e7757600080fd5b805167ffffffffffffffff811115611e9157611e91611d27565b8060051b604051601f19603f830116810181811067ffffffffffffffff82111715611ebe57611ebe611d27565b604052918252602081840181019290810187841115611edc57600080fd5b6020850194505b83851015611eff57845180825260209586019590935001611ee3565b50969550505050505056fea2646970667358221220aac04688618afe90667047421c26ddcc28605124b22479012a5642c6e002c57764736f6c634300081a0033000000000000000000000000145863eb42cf62847a6ca784e6416c1682b1b2ae
Deployed Bytecode
0x6080604052600436106101bb5760003560e01c8063a37b9e7f116100ec578063d0e30db01161008a578063d7b7d3f311610064578063d7b7d3f3146104e0578063edf26d9b14610508578063ee99205c14610528578063f2fde38b1461054857600080fd5b8063d0e30db0146104a3578063d16a4010146104ab578063d3e66a9e146104cb57600080fd5b8063ae38a070116100c6578063ae38a07014610411578063afe43b9414610433578063b0befe631461045b578063b3f006741461048357600080fd5b8063a37b9e7f14610392578063a6769ef8146103ba578063ac65334f146103e757600080fd5b80635f0018cd116101595780637c6f8fae116101335780637c6f8fae146103085780637fd6f15c146103305780638da5cb5b146103545780639dd373b91461037257600080fd5b80635f0018cd146102b65780636504fbad146102cb578063715018a6146102f357600080fd5b80632e1a7d4d116101955780632e1a7d4d1461024e57806334060e161461026e57806339bda01c1461028e57806353ac861e146102a357600080fd5b806316214120146101c75780631d470cb1146101e95780631efe5fc21461022e57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101e76101e2366004611b2e565b610568565b005b3480156101f557600080fd5b50610211735c7f8a570d578ed84e63fdfa7b1ee72deae1ae2381565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561023a57600080fd5b50600254610211906001600160a01b031681565b34801561025a57600080fd5b506101e7610269366004611b61565b610818565b34801561027a57600080fd5b506101e7610289366004611b7a565b610923565b34801561029a57600080fd5b506101e7610960565b6101e76102b1366004611bb7565b610a9d565b3480156102c257600080fd5b506101e7610ce8565b3480156102d757600080fd5b506102117366e428c3f67a68878562e79a0234c1f83c20877081565b3480156102ff57600080fd5b506101e7610cfc565b34801561031457600080fd5b50610211733b44b2a187a7b3824131f8db5a74194d0a42fc1581565b34801561033c57600080fd5b5061034660035481565b604051908152602001610225565b34801561036057600080fd5b506000546001600160a01b0316610211565b34801561037e57600080fd5b506101e761038d366004611be1565b610d10565b34801561039e57600080fd5b5061021173c21223249ca28397b4b6541dffaecc539bff0c5981565b3480156103c657600080fd5b506103466103d5366004611be1565b60056020526000908152604090205481565b3480156103f357600080fd5b506004546104019060ff1681565b6040519015158152602001610225565b34801561041d57600080fd5b50610426610d3a565b6040516102259190611c03565b34801561043f57600080fd5b506102117341bc026dabe978bc2fafea1850456511ca4b01bc81565b34801561046757600080fd5b50610211733b41b27e74dd366ce27cb389dc7877d4e1516d4d81565b34801561048f57600080fd5b50600154610211906001600160a01b031681565b6101e7610e64565b3480156104b757600080fd5b506101e76104c6366004611c5b565b610f3b565b3480156104d757600080fd5b506101e76113f2565b3480156104ec57600080fd5b5061021173145863eb42cf62847a6ca784e6416c1682b1b2ae81565b34801561051457600080fd5b50610211610523366004611b61565b611409565b34801561053457600080fd5b50601054610211906001600160a01b031681565b34801561055457600080fd5b506101e7610563366004611be1565b611433565b6001600160a01b0383167341bc026dabe978bc2fafea1850456511ca4b01bc148015610596575060045460ff165b156105a5576105a53383611473565b6040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b038416906323b872dd906064016020604051808303816000875af11580156105f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061c9190611c9d565b5060006103e8600354846106309190611cd5565b61063a9190611cf2565b90506106468482611528565b60006106528285611d14565b6001600160a01b03861660009081526008602052604090205490915060ff1661071257600a5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529086169063095ea7b3906044016020604051808303816000875af11580156106c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ed9190611c9d565b506001600160a01b0385166000908152600860205260409020805460ff191660011790555b604080516002808252606082018352600092602083019080368337019050509050858160008151811061074757610747611d3d565b60200260200101906001600160a01b031690816001600160a01b031681525050735c7f8a570d578ed84e63fdfa7b1ee72deae1ae238160018151811061078f5761078f611d3d565b6001600160a01b039283166020918202929092010152600a541663791ac947838684336107be42610e10611d53565b6040518663ffffffff1660e01b81526004016107de959493929190611dab565b600060405180830381600087803b1580156107f857600080fd5b505af115801561080c573d6000803e3d6000fd5b50505050505050505050565b600f546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561086f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108939190611c9d565b50600f54604051632e1a7d4d60e01b8152600481018390526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b1580156108da57600080fd5b505af11580156108ee573d6000803e3d6000fd5b505060405133925083156108fc02915083906000818181858888f1935050505015801561091f573d6000803e3d6000fd5b5050565b61092b611a63565b600180546001600160a01b039485166001600160a01b0319918216179091556002805493909416921691909117909155600355565b610968611a63565b60075460005b81811015610a0957600560006007838154811061098d5761098d611d3d565b60009182526020808320909101546001600160a01b031683528201929092526040018120819055600780546006918391859081106109cd576109cd611d3d565b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff191691151591909117905560010161096e565b50610a1660076000611ae0565b6004805460ff191690556010546001600160a01b031615610a9a57601060009054906101000a90046001600160a01b03166001600160a01b03166339bda01c6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a8157600080fd5b505af1158015610a95573d6000803e3d6000fd5b505050505b50565b60035434906000906103e890610ab39084611cd5565b610abd9190611cf2565b6002546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015610af8573d6000803e3d6000fd5b50604080516002808252606082018352600092602083019080368337019050509050735c7f8a570d578ed84e63fdfa7b1ee72deae1ae2381600081518110610b4257610b42611d3d565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600181518110610b7657610b76611d3d565b6001600160a01b039283166020918202929092010152600a541663b6f9de95610b9f8486611d14565b868433610bae42610e10611d53565b6040518663ffffffff1660e01b8152600401610bcd9493929190611de7565b6000604051808303818588803b158015610be657600080fd5b505af1158015610bfa573d6000803e3d6000fd5b505050506001600160a01b0386167341bc026dabe978bc2fafea1850456511ca4b01bc1490508015610c2e575060045460ff165b15610a9557600a546000906001600160a01b031663d06ca61f610c518587611d14565b846040518363ffffffff1660e01b8152600401610c6f929190611e1c565b600060405180830381865afa158015610c8c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610cb49190810190611e3d565b9050600081600181518110610ccb57610ccb611d3d565b60200260200101519050610cdf3382611473565b50505050505050565b610cf0611a63565b6004805460ff19169055565b610d04611a63565b610d0e6000611a90565b565b610d18611a63565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b60075460609060008167ffffffffffffffff811115610d5b57610d5b611d27565b604051908082528060200260200182016040528015610da057816020015b6040805180820190915260008082526020820152815260200190600190039081610d795790505b50905060005b82811015610e5d57604051806040016040528060078381548110610dcc57610dcc611d3d565b9060005260206000200160009054906101000a90046001600160a01b03166001600160a01b031681526020016005600060078581548110610e0f57610e0f611d3d565b60009182526020808320909101546001600160a01b0316835282019290925260400190205490528251839083908110610e4a57610e4a611d3d565b6020908102919091010152600101610da6565b5092915050565b600f5460408051630d0e30db60e41b8152905134926001600160a01b03169163d0e30db091849160048082019260009290919082900301818588803b158015610eac57600080fd5b505af1158015610ec0573d6000803e3d6000fd5b5050600f5460405163a9059cbb60e01b8152336004820152602481018690526001600160a01b03909116935063a9059cbb925060440190506020604051808303816000875af1158015610f17573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091f9190611c9d565b6040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b038516906323b872dd906064016020604051808303816000875af1158015610f8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb29190611c9d565b506001600160a01b0384167341bc026dabe978bc2fafea1850456511ca4b01bc148015610fe1575060045460ff165b15610ff057610ff03383611473565b60006103e8600354846110039190611cd5565b61100d9190611cf2565b90506110198582611528565b60006110258285611d14565b6001600160a01b03871660009081526008602052604090205490915060ff166110e557600a5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529087169063095ea7b3906044016020604051808303816000875af115801561109c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c09190611c9d565b506001600160a01b0386166000908152600860205260409020805460ff191660011790555b60606001600160a01b038716735c7f8a570d578ed84e63fdfa7b1ee72deae1ae23148061112e57506001600160a01b038616735c7f8a570d578ed84e63fdfa7b1ee72deae1ae23145b156111c0576040805160028082526060820183529091602083019080368337019050509050868160008151811061116757611167611d3d565b60200260200101906001600160a01b031690816001600160a01b031681525050858160018151811061119b5761119b611d3d565b60200260200101906001600160a01b031690816001600160a01b031681525050611292565b60408051600380825260808201909252906020820160608036833701905050905086816000815181106111f5576111f5611d3d565b60200260200101906001600160a01b031690816001600160a01b031681525050735c7f8a570d578ed84e63fdfa7b1ee72deae1ae238160018151811061123d5761123d611d3d565b60200260200101906001600160a01b031690816001600160a01b031681525050858160028151811061127157611271611d3d565b60200260200101906001600160a01b031690816001600160a01b0316815250505b600a546001600160a01b0316635c11d795838684336112b342610e10611d53565b6040518663ffffffff1660e01b81526004016112d3959493929190611dab565b600060405180830381600087803b1580156112ed57600080fd5b505af1158015611301573d6000803e3d6000fd5b505050506001600160a01b0386167341bc026dabe978bc2fafea1850456511ca4b01bc148015611333575060045460ff165b15610cdf57600a5460405163d06ca61f60e01b81526000916001600160a01b03169063d06ca61f9061136b9086908690600401611e1c565b600060405180830381865afa158015611388573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113b09190810190611e3d565b9050600081600183516113c39190611d14565b815181106113d3576113d3611d3d565b602002602001015190506113e73382611473565b505050505050505050565b6113fa611a63565b6004805460ff19166001179055565b6007818154811061141957600080fd5b6000918252602090912001546001600160a01b0316905081565b61143b611a63565b6001600160a01b03811661146a57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610a9a81611a90565b6001600160a01b03821660009081526006602052604090205460ff166114f7576007805460018082019092557fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319166001600160a01b0385169081179091556000908152600660205260409020805460ff191690911790555b6001600160a01b0382166000908152600560205260408120805483929061151f908490611d53565b90915550505050565b6000611535600283611cf2565b905060006115438284611d14565b90506001600160a01b0384167341bc026dabe978bc2fafea1850456511ca4b01bc14611936576001600160a01b03841660009081526008602052604090205460ff1661162657600a5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529085169063095ea7b3906044016020604051808303816000875af11580156115dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116019190611c9d565b506001600160a01b0384166000908152600860205260409020805460ff191660011790555b60006001600160a01b038516735c7f8a570d578ed84e63fdfa7b1ee72deae1ae2314611653576003611656565b60025b60ff1667ffffffffffffffff81111561167157611671611d27565b60405190808252806020026020018201604052801561169a578160200160208202803683370190505b509050735c7f8a570d578ed84e63fdfa7b1ee72deae1ae22196001600160a01b038616016117435784816000815181106116d6576116d6611d3d565b60200260200101906001600160a01b031690816001600160a01b0316815250507341bc026dabe978bc2fafea1850456511ca4b01bc8160018151811061171e5761171e611d3d565b60200260200101906001600160a01b031690816001600160a01b031681525050611808565b848160008151811061175757611757611d3d565b60200260200101906001600160a01b031690816001600160a01b031681525050735c7f8a570d578ed84e63fdfa7b1ee72deae1ae238160018151811061179f5761179f611d3d565b60200260200101906001600160a01b031690816001600160a01b0316815250507341bc026dabe978bc2fafea1850456511ca4b01bc816002815181106117e7576117e7611d3d565b60200260200101906001600160a01b031690816001600160a01b0316815250505b600a546001546001600160a01b0391821691635c11d79591869160009186911661183442610e10611d53565b6040518663ffffffff1660e01b8152600401611854959493929190611dab565b600060405180830381600087803b15801561186e57600080fd5b505af1158015611882573d6000803e3d6000fd5b5050601054600092506001600160a01b031690506118ab576001546001600160a01b03166118b8565b6010546001600160a01b03165b600a549091506001600160a01b0316635c11d79584600085856118dd42610e10611d53565b6040518663ffffffff1660e01b81526004016118fd959493929190611dab565b600060405180830381600087803b15801561191757600080fd5b505af115801561192b573d6000803e3d6000fd5b505050505050611a5d565b600d5460015460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810185905291169063a9059cbb906044016020604051808303816000875af115801561198b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119af9190611c9d565b506010546000906001600160a01b03166119d4576001546001600160a01b03166119e1565b6010546001600160a01b03165b600d5460405163a9059cbb60e01b81526001600160a01b0380841660048301526024820186905292935091169063a9059cbb906044016020604051808303816000875af1158015611a36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a5a9190611c9d565b50505b50505050565b6000546001600160a01b03163314610d0e5760405163118cdaa760e01b8152336004820152602401611461565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5080546000825590600052602060002090810190610a9a91905b80821115611b0e5760008155600101611afa565b5090565b80356001600160a01b0381168114611b2957600080fd5b919050565b600080600060608486031215611b4357600080fd5b611b4c84611b12565b95602085013595506040909401359392505050565b600060208284031215611b7357600080fd5b5035919050565b600080600060608486031215611b8f57600080fd5b611b9884611b12565b9250611ba660208501611b12565b929592945050506040919091013590565b60008060408385031215611bca57600080fd5b611bd383611b12565b946020939093013593505050565b600060208284031215611bf357600080fd5b611bfc82611b12565b9392505050565b602080825282518282018190526000918401906040840190835b81811015611c5057835180516001600160a01b031684526020908101518185015290930192604090920191600101611c1d565b509095945050505050565b60008060008060808587031215611c7157600080fd5b611c7a85611b12565b9350611c8860208601611b12565b93969395505050506040820135916060013590565b600060208284031215611caf57600080fd5b81518015158114611bfc57600080fd5b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611cec57611cec611cbf565b92915050565b600082611d0f57634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115611cec57611cec611cbf565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b80820180821115611cec57611cec611cbf565b600081518084526020840193506020830160005b82811015611da15781516001600160a01b0316865260209586019590910190600101611d7a565b5093949350505050565b85815284602082015260a060408201526000611dca60a0830186611d66565b6001600160a01b0394909416606083015250608001529392505050565b848152608060208201526000611e006080830186611d66565b6001600160a01b03949094166040830152506060015292915050565b828152604060208201526000611e356040830184611d66565b949350505050565b600060208284031215611e4f57600080fd5b815167ffffffffffffffff811115611e6657600080fd5b8201601f81018413611e7757600080fd5b805167ffffffffffffffff811115611e9157611e91611d27565b8060051b604051601f19603f830116810181811067ffffffffffffffff82111715611ebe57611ebe611d27565b604052918252602081840181019290810187841115611edc57600080fd5b6020850194505b83851015611eff57845180825260209586019590935001611ee3565b50969550505050505056fea2646970667358221220aac04688618afe90667047421c26ddcc28605124b22479012a5642c6e002c57764736f6c634300081a0033
Loading...
Loading
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.