Transaction Hash:
Block:
22163454 at Mar-31-2025 12:56:47 AM +UTC
Transaction Fee:
0.001005925664832624 ETH
$2.75
Gas Used:
386,096 Gas / 2.605377069 Gwei
Emitted Events:
66 |
Permit2.Permit( owner=[Sender] 0x86d6c2dd4c8160470e1f6ceee5751a02daeed126, token=NetMindTokenProxy, spender=[Receiver] UniversalRouter, amount=1461501637330902918203684832716283019655932542975, expiration=1745974547, nonce=1 )
|
67 |
NetMindTokenProxy.0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef( 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef, 0x00000000000000000000000086d6c2dd4c8160470e1f6ceee5751a02daeed126, 0x000000000000000000000000a86aca6d7c393c06dcdc30473ea3d1b05c358dff, 00000000000000000000000000000000000000000000000f45a45556f11e1a37 )
|
68 |
FiatTokenProxy.0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef( 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef, 0x000000000000000000000000a86aca6d7c393c06dcdc30473ea3d1b05c358dff, 0x000000000000000000000000b4e16d0168e52d35cacd2c6185b44281ec28c9dc, 0000000000000000000000000000000000000000000000000000000013a6a227 )
|
69 |
UniswapV2Pair.Sync( reserve0=274641195476759445487136, reserve1=322040629689 )
|
70 |
UniswapV2Pair.Swap( sender=[Receiver] UniversalRouter, amount0In=281719390822341679671, amount1In=0, amount0Out=0, amount1Out=329687591, to=UniswapV2Pair )
|
71 |
WETH9.Transfer( src=UniswapV2Pair, dst=UniswapV2Pair, wad=184282153732815825 )
|
72 |
UniswapV2Pair.Sync( reserve0=9394993236437, reserve1=5267041631476065569572 )
|
73 |
UniswapV2Pair.Swap( sender=[Receiver] UniversalRouter, amount0In=329687591, amount1In=0, amount0Out=0, amount1Out=184282153732815825, to=UniswapV2Pair )
|
74 |
NODEAI.Transfer( from=UniswapV2Pair, to=NODEAI, value=48771386308288647621 )
|
75 |
NODEAI.Transfer( from=UniswapV2Pair, to=[Receiver] UniversalRouter, value=1170513271398927542922 )
|
76 |
UniswapV2Pair.Sync( reserve0=2079348460722708337399921, reserve1=313513290150341888577 )
|
77 |
UniswapV2Pair.Swap( sender=[Receiver] UniversalRouter, amount0In=0, amount1In=184282153732815825, amount0Out=1219284657707216190543, amount1Out=0, to=[Receiver] UniversalRouter )
|
78 |
NODEAI.Approval( owner=NODEAI, spender=UniswapV2Router02, value=10016077970415904395585 )
|
79 |
NODEAI.Transfer( from=NODEAI, to=UniswapV2Pair, value=10016077970415904395585 )
|
80 |
NODEAI.Approval( owner=NODEAI, spender=UniswapV2Router02, value=0 )
|
81 |
WETH9.Transfer( src=UniswapV2Pair, dst=UniswapV2Router02, wad=1498445104183687277 )
|
82 |
UniswapV2Pair.Sync( reserve0=2089364538693124241795506, reserve1=312014845046158201300 )
|
83 |
UniswapV2Pair.Swap( sender=UniswapV2Router02, amount0In=10016077970415904395585, amount1In=0, amount0Out=0, amount1Out=1498445104183687277, to=UniswapV2Router02 )
|
84 |
WETH9.Withdrawal( src=UniswapV2Router02, wad=1498445104183687277 )
|
85 |
NODEAI.SwapTokensForETH( amountIn=10016077970415904395585, path=[0x1258D60B224c0C5cD888D37bbF31aa5FCFb7e870, 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2] )
|
86 |
NODEAI.Transfer( from=[Receiver] UniversalRouter, to=FeeCollector, value=2926283178497318857 )
|
87 |
NODEAI.Transfer( from=[Receiver] UniversalRouter, to=[Sender] 0x86d6c2dd4c8160470e1f6ceee5751a02daeed126, value=1167586988220430224065 )
|
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x00000000...43aC78BA3 | (Uniswap Protocol: Permit2) | ||||
0x03AA6298...57783e8D6 | |||||
0x1258D60B...FCFb7e870 | |||||
0x1f9090aa...8e676c326
Miner
| 3.3924488923210338 Eth | 3.3932210843210338 Eth | 0.000772192 | ||
0x769f5394...6d470cD1f | |||||
0x86d6C2DD...2dAEed126 |
0.0146108498300385 Eth
Nonce: 55
|
0.013604924165205876 Eth
Nonce: 56
| 0.001005925664832624 | ||
0xA0b86991...E3606eB48 | |||||
0xA86ACA6D...05c358DFF | |||||
0xB4e16d01...1Ec28C9Dc | |||||
0xC02aaA39...83C756Cc2 | 2,882,520.154710636858896339 Eth | 2,882,518.656265532675209062 Eth | 1.498445104183687277 | ||
0xD335c5E3...F76eE29E6 | 1.173468893991371172 Eth | 2.29730272212913663 Eth | 1.123833828137765458 | ||
0xE4eEc0C7...9532E94E5 | 0.384660341706587807 Eth | 0.759271617752509626 Eth | 0.374611276045921819 |
Execution Trace
UniversalRouter.execute( commands=0x0A080604, inputs=[AAAAAAAAAAAAAAAAA6pimPE3BkJkJBXtwNuLlXeD6NYAAAAAAAAAAAAAAAD//////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoEXUTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAABmqYk8wH2R2VZErt0F0D+V4duorwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABn6e8bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQU3tXKcdonnplfNqBSrkFe+pRJXPjYkLKiuUuG+atzR5I1ZRodAItYUHC9rhYZfxollAjCvaL3VTvwkJqspgo4ocAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==, AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9FpFVW8R4aNwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAA6pimPE3BkJkJBXtwNuLlXeD6NYAAAAAAAAAAAAAAACguGmRxiGLNsHRnUounrDONgbrSAAAAAAAAAAAAAAAAMAqqjmyI/6NCg5cTyfq2Qg8dWzCAAAAAAAAAAAAAAAAEljWCyJMDFzYiNN7vzGqX8+36HA=, AAAAAAAAAAAAAAAAEljWCyJMDFzYiNN7vzGqX8+36HAAAAAAAAAAAAAAAAAAAAD+4ToQOhDVk7muBrPgXy5+HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZ, AAAAAAAAAAAAAAAAEljWCyJMDFzYiNN7vzGqX8+36HAAAAAAAAAAAAAAAACG1sLdTIFgRw4fbO7ldRoC2u7RJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPvro8IXbSP86], deadline=1743384360 )
Permit2.permit( owner=0x86d6C2DD4C8160470e1F6ceeE5751a02dAEed126, permitSingle=[{name:details, type:tuple, order:1, indexed:false, value:[{name:token, type:address, order:1, indexed:false, value:0x03AA6298F1370642642415EDC0db8b957783e8D6, valueString:0x03AA6298F1370642642415EDC0db8b957783e8D6}, {name:amount, type:uint160, order:2, indexed:false, value:1461501637330902918203684832716283019655932542975, valueString:1461501637330902918203684832716283019655932542975}, {name:expiration, type:uint48, order:3, indexed:false, value:1745974547, valueString:1745974547}, {name:nonce, type:uint48, order:4, indexed:false, value:1, valueString:1}], valueString:[{name:token, type:address, order:1, indexed:false, value:0x03AA6298F1370642642415EDC0db8b957783e8D6, valueString:0x03AA6298F1370642642415EDC0db8b957783e8D6}, {name:amount, type:uint160, order:2, indexed:false, value:1461501637330902918203684832716283019655932542975, valueString:1461501637330902918203684832716283019655932542975}, {name:expiration, type:uint48, order:3, indexed:false, value:1745974547, valueString:1745974547}, {name:nonce, type:uint48, order:4, indexed:false, value:1, valueString:1}]}, {name:spender, type:address, order:2, indexed:false, value:0x66a9893cC07D91D95644AEDD05D03f95e1dBA8Af, valueString:0x66a9893cC07D91D95644AEDD05D03f95e1dBA8Af}, {name:sigDeadline, type:uint256, order:3, indexed:false, value:1743384347, valueString:1743384347}], signature=0x4DED5CA71DA279E995F36A052AE415EFA94495CF8D890B2A2B94B86F9AB73479235651A1D008B585070BDAE16197F1A259408C2BDA2F7553BF0909AACA60A38A1C )
-
Null: 0x000...001.7e6d84b6( )
-
Permit2.transferFrom( from=0x86d6C2DD4C8160470e1F6ceeE5751a02dAEed126, to=0xA86ACA6D7C393c06DcDC30473ea3D1b05c358DFF, amount=281719390822341679671, token=0x03AA6298F1370642642415EDC0db8b957783e8D6 )
NetMindTokenProxy.23b872dd( )
-
NetMindToken.transferFrom( from=0x86d6C2DD4C8160470e1F6ceeE5751a02dAEed126, to=0xA86ACA6D7C393c06DcDC30473ea3D1b05c358DFF, value=281719390822341679671 ) => ( True )
-
-
NODEAI.balanceOf( account=0x66a9893cC07D91D95644AEDD05D03f95e1dBA8Af ) => ( 0 )
-
UniswapV2Pair.STATICCALL( )
NetMindTokenProxy.70a08231( )
-
NetMindToken.balanceOf( account=0xA86ACA6D7C393c06DcDC30473ea3D1b05c358DFF ) => ( 274641195476759445487136 )
-
UniswapV2Pair.swap( amount0Out=0, amount1Out=329687591, to=0xB4e16d0168e52d35CaCD2c6185b44281Ec28C9Dc, data=0x )
FiatTokenProxy.a9059cbb( )
-
FiatTokenV2_2.transfer( to=0xB4e16d0168e52d35CaCD2c6185b44281Ec28C9Dc, value=329687591 ) => ( True )
-
NetMindTokenProxy.70a08231( )
-
NetMindToken.balanceOf( account=0xA86ACA6D7C393c06DcDC30473ea3D1b05c358DFF ) => ( 274641195476759445487136 )
-
FiatTokenProxy.70a08231( )
-
FiatTokenV2_2.balanceOf( account=0xA86ACA6D7C393c06DcDC30473ea3D1b05c358DFF ) => ( 322040629689 )
-
-
UniswapV2Pair.STATICCALL( )
FiatTokenProxy.70a08231( )
-
FiatTokenV2_2.balanceOf( account=0xB4e16d0168e52d35CaCD2c6185b44281Ec28C9Dc ) => ( 9394993236437 )
-
UniswapV2Pair.swap( amount0Out=0, amount1Out=184282153732815825, to=0x769f539486b31eF310125C44d7F405C6d470cD1f, data=0x )
-
WETH9.transfer( dst=0x769f539486b31eF310125C44d7F405C6d470cD1f, wad=184282153732815825 ) => ( True )
FiatTokenProxy.70a08231( )
-
FiatTokenV2_2.balanceOf( account=0xB4e16d0168e52d35CaCD2c6185b44281Ec28C9Dc ) => ( 9394993236437 )
-
-
WETH9.balanceOf( 0xB4e16d0168e52d35CaCD2c6185b44281Ec28C9Dc ) => ( 5267041631476065569572 )
-
-
UniswapV2Pair.STATICCALL( )
-
WETH9.balanceOf( 0x769f539486b31eF310125C44d7F405C6d470cD1f ) => ( 313513290150341888577 )
UniswapV2Pair.swap( amount0Out=1219284657707216190543, amount1Out=0, to=0x66a9893cC07D91D95644AEDD05D03f95e1dBA8Af, data=0x )
-
NODEAI.transfer( recipient=0x66a9893cC07D91D95644AEDD05D03f95e1dBA8Af, amount=1219284657707216190543 ) => ( True )
-
NODEAI.balanceOf( account=0x769f539486b31eF310125C44d7F405C6d470cD1f ) => ( 2079348460722708337399921 )
-
WETH9.balanceOf( 0x769f539486b31eF310125C44d7F405C6d470cD1f ) => ( 313513290150341888577 )
-
-
NODEAI.balanceOf( account=0x66a9893cC07D91D95644AEDD05D03f95e1dBA8Af ) => ( 1170513271398927542922 )
-
NODEAI.balanceOf( account=0x66a9893cC07D91D95644AEDD05D03f95e1dBA8Af ) => ( 1170513271398927542922 )
NODEAI.transfer( recipient=0x000000fee13a103A10D593b9AE06b3e05F2E7E1c, amount=2926283178497318857 ) => ( True )
UniswapV2Router02.swapExactTokensForETHSupportingFeeOnTransferTokens( amountIn=10016077970415904395585, amountOutMin=0, path=[0x1258D60B224c0C5cD888D37bbF31aa5FCFb7e870, 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2], to=0x1258D60B224c0C5cD888D37bbF31aa5FCFb7e870, deadline=1743382607 )
-
NODEAI.transferFrom( sender=0x1258D60B224c0C5cD888D37bbF31aa5FCFb7e870, recipient=0x769f539486b31eF310125C44d7F405C6d470cD1f, amount=10016077970415904395585 ) => ( True )
-
UniswapV2Pair.STATICCALL( )
-
NODEAI.balanceOf( account=0x769f539486b31eF310125C44d7F405C6d470cD1f ) => ( 2089364538693124241795506 )
UniswapV2Pair.swap( amount0Out=0, amount1Out=1498445104183687277, to=0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, data=0x )
-
WETH9.balanceOf( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ) => ( 1498445104183687277 )
WETH9.withdraw( wad=1498445104183687277 )
- ETH 1.498445104183687277
UniswapV2Router02.CALL( )
- ETH 1.498445104183687277
- ETH 1.498445104183687277
NODEAI.CALL( )
-
- ETH 0.374611276045921819
0xe4eec0c7e825f988aeee7d05be579519532e94e5.CALL( )
- ETH 1.123833828137765458
0xd335c5e36f1b19aece98b78e9827a9df76ee29e6.CALL( )
-
NODEAI.balanceOf( account=0x66a9893cC07D91D95644AEDD05D03f95e1dBA8Af ) => ( 1167586988220430224065 )
-
NODEAI.transfer( recipient=0x86d6C2DD4C8160470e1F6ceeE5751a02dAEed126, amount=1167586988220430224065 ) => ( True )
File 1 of 13: UniversalRouter
File 2 of 13: Permit2
File 3 of 13: NetMindTokenProxy
File 4 of 13: FiatTokenProxy
File 5 of 13: UniswapV2Pair
File 6 of 13: UniswapV2Pair
File 7 of 13: UniswapV2Pair
File 8 of 13: WETH9
File 9 of 13: NODEAI
File 10 of 13: UniswapV2Router02
File 11 of 13: FeeCollector
File 12 of 13: NetMindToken
File 13 of 13: FiatTokenV2_2
12345678910111213141516// SPDX-License-Identifier: GPL-3.0-or-laterpragma solidity ^0.8.24;// Command implementationsimport {Dispatcher} from './base/Dispatcher.sol';import {RouterParameters} from './types/RouterParameters.sol';import {PaymentsImmutables, PaymentsParameters} from './modules/PaymentsImmutables.sol';import {UniswapImmutables, UniswapParameters} from './modules/uniswap/UniswapImmutables.sol';import {V4SwapRouter} from './modules/uniswap/v4/V4SwapRouter.sol';import {Commands} from './libraries/Commands.sol';import {IUniversalRouter} from './interfaces/IUniversalRouter.sol';import {MigratorImmutables, MigratorParameters} from './modules/MigratorImmutables.sol';contract UniversalRouter is IUniversalRouter, Dispatcher {constructor(RouterParameters memory params)UniswapImmutables(UniswapParameters(params.v2Factory, params.v3Factory, params.pairInitCodeHash, params.poolInitCodeHash))
File 2 of 13: Permit2
12345678910111213141516// SPDX-License-Identifier: AGPL-3.0-onlypragma solidity >=0.8.0;/// @notice Modern and gas efficient ERC20 + EIP-2612 implementation./// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC20.sol)/// @author Modified from Uniswap (https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol)/// @dev Do not manually set balances without updating totalSupply, as the sum of all user balances must not exceed it.abstract contract ERC20 {/*//////////////////////////////////////////////////////////////EVENTS//////////////////////////////////////////////////////////////*/event Transfer(address indexed from, address indexed to, uint256 amount);event Approval(address indexed owner, address indexed spender, uint256 amount);/*//////////////////////////////////////////////////////////////METADATA STORAGE//////////////////////////////////////////////////////////////*/string public name;
File 3 of 13: NetMindTokenProxy
1{"NetMindToken_proxy.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport \"./proxy.sol\";\n\ncontract NetMindTokenProxyis baseProxy{\n constructor(address impl) {\n _setAdmin(msg.sender);\n _setLogic(impl);\n }\n}\n"},"proxy.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nlibrary StorageSlot {\n struct AddressSlot {\n address value;\n }\n\nstruct BooleanSlot {\n bool value;\n }\n\n struct Bytes32Slot {\n bytes32 value;\n }\n\n struct Uint256Slot {\nuint256 value;\n }\n\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n assembly {\nr.slot := slot\n }\n }\n\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n assembly{\n r.slot := slot\n }\n }\n\n\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\nassembly {\n r.slot := slot\n }\n }\n\n\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slotstorage r) {\n assembly {\n r.slot := slot\n }\n }\n}\n\ncontract Proxy {\n //EIP1967 Impl_solt: keccak-256 hash of\"eip1967.proxy.implementation\" subtracted by 1\n bytes32 internal constant _IMPLEMENTATION_SLOT =0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n //EIP1967 Admin_solt: keccak-256 hash of \"eip1967.proxy.admin\"subtracted by 1\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n \n function_setAdmin(address admin_) internal {\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = admin_;\n }\n \n function _setLogic(addresslogic_) internal {\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = logic_;\n }\n \n function logic() public view returns(address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n \n function admin() public view returns (address) {\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\n }\n \n \n fallback () external payable {\n assembly {\nlet impl := sload(_IMPLEMENTATION_SLOT)\n calldatacopy(0, 0, calldatasize())\n let result := delegatecall(gas(), impl,0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n switch result\n case 0 { revert(0,returndatasize()) }\n default { return(0, returndatasize()) }\n }\n }\n \n receive () external payable virtual{}\n}\n\n\ncontract baseProxy is Proxy {\n event Upgraded(address indexed impl);\n event AdminChanged(address preAdmin, address newAdmin);\n\n modifier onlyAmdin(){\n require(msg.sender == admin(), \"baseProxy: Caller not admin\");\n _;\n }\n \n functionchangeAdmin(address newAdmin) external onlyAmdin returns(bool) {\n address preAdmin = admin();\n _setAdmin(newAdmin);\n emitAdminChanged(preAdmin, newAdmin);\n return true;\n } \n \n function upgrad(address newLogic) external onlyAmdin returns(bool) {\n_setLogic(newLogic);\n emit Upgraded(newLogic);\n return true;\n }\n}\n"}}
File 4 of 13: FiatTokenProxy
12345678910111213141516pragma solidity ^0.4.24;// File: zos-lib/contracts/upgradeability/Proxy.sol/*** @title Proxy* @dev Implements delegation of calls to other contracts, with proper* forwarding of return values and bubbling of failures.* It defines a fallback function that delegates all calls to the address* returned by the abstract _implementation() internal function.*/contract Proxy {/*** @dev Fallback function.* Implemented entirely in `_fallback`.*/
File 5 of 13: UniswapV2Pair
12345678910111213141516// File: contracts/interfaces/IUniswapV2Pair.solpragma solidity >=0.5.0;interface IUniswapV2Pair {event Approval(address indexed owner, address indexed spender, uint value);event Transfer(address indexed from, address indexed to, uint value);function name() external pure returns (string memory);function symbol() external pure returns (string memory);function decimals() external pure returns (uint8);function totalSupply() external view returns (uint);function balanceOf(address owner) external view returns (uint);function allowance(address owner, address spender) external view returns (uint);function approve(address spender, uint value) external returns (bool);
File 6 of 13: UniswapV2Pair
12345678910111213141516// File: contracts/interfaces/IUniswapV2Pair.solpragma solidity >=0.5.0;interface IUniswapV2Pair {event Approval(address indexed owner, address indexed spender, uint value);event Transfer(address indexed from, address indexed to, uint value);function name() external pure returns (string memory);function symbol() external pure returns (string memory);function decimals() external pure returns (uint8);function totalSupply() external view returns (uint);function balanceOf(address owner) external view returns (uint);function allowance(address owner, address spender) external view returns (uint);function approve(address spender, uint value) external returns (bool);
File 7 of 13: UniswapV2Pair
12345678910111213141516// File: contracts/interfaces/IUniswapV2Pair.solpragma solidity >=0.5.0;interface IUniswapV2Pair {event Approval(address indexed owner, address indexed spender, uint value);event Transfer(address indexed from, address indexed to, uint value);function name() external pure returns (string memory);function symbol() external pure returns (string memory);function decimals() external pure returns (uint8);function totalSupply() external view returns (uint);function balanceOf(address owner) external view returns (uint);function allowance(address owner, address spender) external view returns (uint);function approve(address spender, uint value) external returns (bool);
File 8 of 13: WETH9
12345678910111213141516// Copyright (C) 2015, 2016, 2017 Dapphub// This program is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.// This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.// You should have received a copy of the GNU General Public License// along with this program. If not, see <http://www.gnu.org/licenses/>.pragma solidity ^0.4.18;
File 9 of 13: NODEAI
12345678910111213141516// SPDX-License-Identifier: UNLICENSEDpragma solidity 0.8.19;/*/$$$$$$ /$$$$$$$ /$$ /$$/$$__ $$| $$__ $$| $$ | $$| $$ \__/| $$ \ $$| $$ | $$| $$ /$$$$| $$$$$$$/| $$ | $$| $$|_ $$| $$____/ | $$ | $$| $$ \ $$| $$ | $$ | $$| $$$$$$/| $$ | $$$$$$/\______/ |__/ \______/Website: https://nodeai.app
File 10 of 13: UniswapV2Router02
12345678910111213141516pragma solidity =0.6.6;interface IUniswapV2Factory {event PairCreated(address indexed token0, address indexed token1, address pair, uint);function feeTo() external view returns (address);function feeToSetter() external view returns (address);function getPair(address tokenA, address tokenB) external view returns (address pair);function allPairs(uint) external view returns (address pair);function allPairsLength() external view returns (uint);function createPair(address tokenA, address tokenB) external returns (address pair);function setFeeTo(address) external;function setFeeToSetter(address) external;
File 11 of 13: FeeCollector
12345678910111213141516// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity ^0.8.0;import {Owned} from "solmate/auth/Owned.sol";import {ERC20} from "solmate/tokens/ERC20.sol";import {SafeTransferLib} from "solmate/utils/SafeTransferLib.sol";import {IFeeCollector} from "./interfaces/IFeeCollector.sol";import {IPermit2} from "./external/IPermit2.sol";/// @notice The collector of protocol fees that will be used to swap and send to a fee recipient address.contract FeeCollector is Owned, IFeeCollector {using SafeTransferLib for ERC20;address public universalRouter;ERC20 public immutable feeToken;IPermit2 public immutable permit2;uint256 public constant MAX_APPROVAL_AMOUNT = type(uint256).max;uint160 public constant MAX_PERMIT2_APPROVAL_AMOUNT = type(uint160).max;uint48 public constant MAX_PERMIT2_DEADLINE = type(uint48).max;
File 12 of 13: NetMindToken
12345678910111213141516// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (access/AccessControl.sol)pragma solidity ^0.8.20;import {IAccessControl} from "@openzeppelin/contracts/access/IAccessControl.sol";import {ContextUpgradeable} from "../utils/ContextUpgradeable.sol";import {ERC165Upgradeable} from "../utils/introspection/ERC165Upgradeable.sol";import {Initializable} from "../proxy/utils/Initializable.sol";/*** @dev Contract module that allows children to implement role-based access* control mechanisms. This is a lightweight version that doesn't allow enumerating role* members except through off-chain means by accessing the contract event logs. Some* applications may benefit from on-chain enumerability, for those cases see* {AccessControlEnumerable}.** Roles are referred to by their `bytes32` identifier. These should be exposed* in the external API and be unique. The best way to achieve this is by
File 13 of 13: FiatTokenV2_2
12345678910111213141516/*** SPDX-License-Identifier: Apache-2.0** Copyright (c) 2023, Circle Internet Financial, LLC.** Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance with the License.* You may obtain a copy of the License at** http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.