Merge 85949339323b11895096d76c011ffc534f099d1b into ce8179f07e4fb8740b43570aa2c5826447c2af26

This commit is contained in:
rex 2025-01-27 17:24:36 -05:00 committed by GitHub
commit bd096c0685
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 1438 additions and 10 deletions

View File

@ -0,0 +1,901 @@
[
{
"inputs": [
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
}
],
"name": "AllowanceExpired",
"type": "error"
},
{
"inputs": [],
"name": "ExcessiveInvalidation",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "InsufficientAllowance",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "maxAmount",
"type": "uint256"
}
],
"name": "InvalidAmount",
"type": "error"
},
{
"inputs": [],
"name": "InvalidContractSignature",
"type": "error"
},
{
"inputs": [],
"name": "InvalidNonce",
"type": "error"
},
{
"inputs": [],
"name": "InvalidSignature",
"type": "error"
},
{
"inputs": [],
"name": "InvalidSignatureLength",
"type": "error"
},
{
"inputs": [],
"name": "InvalidSigner",
"type": "error"
},
{
"inputs": [],
"name": "LengthMismatch",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "signatureDeadline",
"type": "uint256"
}
],
"name": "SignatureExpired",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint160",
"name": "amount",
"type": "uint160"
},
{
"indexed": false,
"internalType": "uint48",
"name": "expiration",
"type": "uint48"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "Lockdown",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint48",
"name": "newNonce",
"type": "uint48"
},
{
"indexed": false,
"internalType": "uint48",
"name": "oldNonce",
"type": "uint48"
}
],
"name": "NonceInvalidation",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint160",
"name": "amount",
"type": "uint160"
},
{
"indexed": false,
"internalType": "uint48",
"name": "expiration",
"type": "uint48"
},
{
"indexed": false,
"internalType": "uint48",
"name": "nonce",
"type": "uint48"
}
],
"name": "Permit",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "word",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "mask",
"type": "uint256"
}
],
"name": "UnorderedNonceInvalidation",
"type": "event"
},
{
"inputs": [],
"name": "DOMAIN_SEPARATOR",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint160",
"name": "amount",
"type": "uint160"
},
{
"internalType": "uint48",
"name": "expiration",
"type": "uint48"
},
{
"internalType": "uint48",
"name": "nonce",
"type": "uint48"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint160",
"name": "amount",
"type": "uint160"
},
{
"internalType": "uint48",
"name": "expiration",
"type": "uint48"
}
],
"name": "approve",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint48",
"name": "newNonce",
"type": "uint48"
}
],
"name": "invalidateNonces",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "wordPos",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "mask",
"type": "uint256"
}
],
"name": "invalidateUnorderedNonces",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"internalType": "struct IAllowanceTransfer.TokenSpenderPair[]",
"name": "approvals",
"type": "tuple[]"
}
],
"name": "lockdown",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "nonceBitmap",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"components": [
{
"components": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint160",
"name": "amount",
"type": "uint160"
},
{
"internalType": "uint48",
"name": "expiration",
"type": "uint48"
},
{
"internalType": "uint48",
"name": "nonce",
"type": "uint48"
}
],
"internalType": "struct IAllowanceTransfer.PermitDetails[]",
"name": "details",
"type": "tuple[]"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "sigDeadline",
"type": "uint256"
}
],
"internalType": "struct IAllowanceTransfer.PermitBatch",
"name": "permitBatch",
"type": "tuple"
},
{
"internalType": "bytes",
"name": "signature",
"type": "bytes"
}
],
"name": "permit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"components": [
{
"components": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint160",
"name": "amount",
"type": "uint160"
},
{
"internalType": "uint48",
"name": "expiration",
"type": "uint48"
},
{
"internalType": "uint48",
"name": "nonce",
"type": "uint48"
}
],
"internalType": "struct IAllowanceTransfer.PermitDetails",
"name": "details",
"type": "tuple"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "sigDeadline",
"type": "uint256"
}
],
"internalType": "struct IAllowanceTransfer.PermitSingle",
"name": "permitSingle",
"type": "tuple"
},
{
"internalType": "bytes",
"name": "signature",
"type": "bytes"
}
],
"name": "permit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"components": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"internalType": "struct ISignatureTransfer.TokenPermissions",
"name": "permitted",
"type": "tuple"
},
{
"internalType": "uint256",
"name": "nonce",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
}
],
"internalType": "struct ISignatureTransfer.PermitTransferFrom",
"name": "permit",
"type": "tuple"
},
{
"components": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "requestedAmount",
"type": "uint256"
}
],
"internalType": "struct ISignatureTransfer.SignatureTransferDetails",
"name": "transferDetails",
"type": "tuple"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "bytes",
"name": "signature",
"type": "bytes"
}
],
"name": "permitTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"components": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"internalType": "struct ISignatureTransfer.TokenPermissions[]",
"name": "permitted",
"type": "tuple[]"
},
{
"internalType": "uint256",
"name": "nonce",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
}
],
"internalType": "struct ISignatureTransfer.PermitBatchTransferFrom",
"name": "permit",
"type": "tuple"
},
{
"components": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "requestedAmount",
"type": "uint256"
}
],
"internalType": "struct ISignatureTransfer.SignatureTransferDetails[]",
"name": "transferDetails",
"type": "tuple[]"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "bytes",
"name": "signature",
"type": "bytes"
}
],
"name": "permitTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"components": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"internalType": "struct ISignatureTransfer.TokenPermissions",
"name": "permitted",
"type": "tuple"
},
{
"internalType": "uint256",
"name": "nonce",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
}
],
"internalType": "struct ISignatureTransfer.PermitTransferFrom",
"name": "permit",
"type": "tuple"
},
{
"components": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "requestedAmount",
"type": "uint256"
}
],
"internalType": "struct ISignatureTransfer.SignatureTransferDetails",
"name": "transferDetails",
"type": "tuple"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "bytes32",
"name": "witness",
"type": "bytes32"
},
{
"internalType": "string",
"name": "witnessTypeString",
"type": "string"
},
{
"internalType": "bytes",
"name": "signature",
"type": "bytes"
}
],
"name": "permitWitnessTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"components": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"internalType": "struct ISignatureTransfer.TokenPermissions[]",
"name": "permitted",
"type": "tuple[]"
},
{
"internalType": "uint256",
"name": "nonce",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
}
],
"internalType": "struct ISignatureTransfer.PermitBatchTransferFrom",
"name": "permit",
"type": "tuple"
},
{
"components": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "requestedAmount",
"type": "uint256"
}
],
"internalType": "struct ISignatureTransfer.SignatureTransferDetails[]",
"name": "transferDetails",
"type": "tuple[]"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "bytes32",
"name": "witness",
"type": "bytes32"
},
{
"internalType": "string",
"name": "witnessTypeString",
"type": "string"
},
{
"internalType": "bytes",
"name": "signature",
"type": "bytes"
}
],
"name": "permitWitnessTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint160",
"name": "amount",
"type": "uint160"
},
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"internalType": "struct IAllowanceTransfer.AllowanceTransferDetails[]",
"name": "transferDetails",
"type": "tuple[]"
}
],
"name": "transferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint160",
"name": "amount",
"type": "uint160"
},
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "transferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]

View File

@ -0,0 +1,497 @@
[
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "permit2",
"type": "address"
},
{
"internalType": "address",
"name": "weth9",
"type": "address"
},
{
"internalType": "address",
"name": "seaportV1_5",
"type": "address"
},
{
"internalType": "address",
"name": "seaportV1_4",
"type": "address"
},
{
"internalType": "address",
"name": "openseaConduit",
"type": "address"
},
{
"internalType": "address",
"name": "nftxZap",
"type": "address"
},
{
"internalType": "address",
"name": "x2y2",
"type": "address"
},
{
"internalType": "address",
"name": "foundation",
"type": "address"
},
{
"internalType": "address",
"name": "sudoswap",
"type": "address"
},
{
"internalType": "address",
"name": "elementMarket",
"type": "address"
},
{
"internalType": "address",
"name": "nft20Zap",
"type": "address"
},
{
"internalType": "address",
"name": "cryptopunks",
"type": "address"
},
{
"internalType": "address",
"name": "looksRareV2",
"type": "address"
},
{
"internalType": "address",
"name": "routerRewardsDistributor",
"type": "address"
},
{
"internalType": "address",
"name": "looksRareRewardsDistributor",
"type": "address"
},
{
"internalType": "address",
"name": "looksRareToken",
"type": "address"
},
{
"internalType": "address",
"name": "v2Factory",
"type": "address"
},
{
"internalType": "address",
"name": "v3Factory",
"type": "address"
},
{
"internalType": "bytes32",
"name": "pairInitCodeHash",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "poolInitCodeHash",
"type": "bytes32"
}
],
"internalType": "struct RouterParameters",
"name": "params",
"type": "tuple"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "BalanceTooLow",
"type": "error"
},
{
"inputs": [],
"name": "BuyPunkFailed",
"type": "error"
},
{
"inputs": [],
"name": "ContractLocked",
"type": "error"
},
{
"inputs": [],
"name": "ETHNotAccepted",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "commandIndex",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "message",
"type": "bytes"
}
],
"name": "ExecutionFailed",
"type": "error"
},
{
"inputs": [],
"name": "FromAddressIsNotOwner",
"type": "error"
},
{
"inputs": [],
"name": "InsufficientETH",
"type": "error"
},
{
"inputs": [],
"name": "InsufficientToken",
"type": "error"
},
{
"inputs": [],
"name": "InvalidBips",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "commandType",
"type": "uint256"
}
],
"name": "InvalidCommandType",
"type": "error"
},
{
"inputs": [],
"name": "InvalidOwnerERC1155",
"type": "error"
},
{
"inputs": [],
"name": "InvalidOwnerERC721",
"type": "error"
},
{
"inputs": [],
"name": "InvalidPath",
"type": "error"
},
{
"inputs": [],
"name": "InvalidReserves",
"type": "error"
},
{
"inputs": [],
"name": "InvalidSpender",
"type": "error"
},
{
"inputs": [],
"name": "LengthMismatch",
"type": "error"
},
{
"inputs": [],
"name": "SliceOutOfBounds",
"type": "error"
},
{
"inputs": [],
"name": "TransactionDeadlinePassed",
"type": "error"
},
{
"inputs": [],
"name": "UnableToClaim",
"type": "error"
},
{
"inputs": [],
"name": "UnsafeCast",
"type": "error"
},
{
"inputs": [],
"name": "V2InvalidPath",
"type": "error"
},
{
"inputs": [],
"name": "V2TooLittleReceived",
"type": "error"
},
{
"inputs": [],
"name": "V2TooMuchRequested",
"type": "error"
},
{
"inputs": [],
"name": "V3InvalidAmountOut",
"type": "error"
},
{
"inputs": [],
"name": "V3InvalidCaller",
"type": "error"
},
{
"inputs": [],
"name": "V3InvalidSwap",
"type": "error"
},
{
"inputs": [],
"name": "V3TooLittleReceived",
"type": "error"
},
{
"inputs": [],
"name": "V3TooMuchRequested",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "RewardsSent",
"type": "event"
},
{
"inputs": [
{
"internalType": "bytes",
"name": "looksRareClaim",
"type": "bytes"
}
],
"name": "collectRewards",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes",
"name": "commands",
"type": "bytes"
},
{
"internalType": "bytes[]",
"name": "inputs",
"type": "bytes[]"
}
],
"name": "execute",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes",
"name": "commands",
"type": "bytes"
},
{
"internalType": "bytes[]",
"name": "inputs",
"type": "bytes[]"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
}
],
"name": "execute",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC1155BatchReceived",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC1155Received",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC721Received",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "int256",
"name": "amount0Delta",
"type": "int256"
},
{
"internalType": "int256",
"name": "amount1Delta",
"type": "int256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "uniswapV3SwapCallback",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
]

View File

@ -66,12 +66,18 @@ UNISWAP_V3_CONTRACT_SPECS = [
ClassifierSpec(
abi_name="Quoter",
protocol=Protocol.uniswap_v3,
valid_contract_addresses=["0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6"],
valid_contract_addresses=[
"0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6",
"0x61fFE014bA17989E743c5F6cB21bF9697530B21e",
],
),
ClassifierSpec(
abi_name="SwapRouter",
protocol=Protocol.uniswap_v3,
valid_contract_addresses=["0xE592427A0AEce92De3Edee1F18E0157C05861564"],
valid_contract_addresses=[
"0xE592427A0AEce92De3Edee1F18E0157C05861564",
"0x68b3465833fb72a70ecdf485e0e4c7bd8665fc45",
],
),
ClassifierSpec(
abi_name="NFTDescriptor",
@ -98,6 +104,19 @@ UNISWAP_V3_CONTRACT_SPECS = [
protocol=Protocol.uniswap_v3,
valid_contract_addresses=["0xA5644E29708357803b5A882D272c41cC0dF92B34"],
),
ClassifierSpec(
abi_name="Permit2",
protocol=Protocol.uniswap_v3,
valid_contract_addresses=["0x000000000022d473030f116ddee9f6b43ac78ba3"],
),
ClassifierSpec(
abi_name="UniversalRouter",
protocol=Protocol.uniswap_v3,
valid_contract_addresses=[
"0xef1c6e67703c7bd7107eed8303fbe6ec2554bf6b",
"0x3fc91a3afd70395cd496c647d5a6cc9d4b2b7fad",
],
),
]
UNISWAP_V3_GENERAL_SPECS = [

View File

@ -4,8 +4,12 @@ from mev_inspect.schemas.sandwiches import Sandwich
from mev_inspect.schemas.swaps import Swap
UNISWAP_V2_ROUTER = "0x7a250d5630b4cf539739df2c5dacb4c659f2488d"
UNISWAP_V3_ROUTER = "0xe592427a0aece92de3edee1f18e0157c05861564"
UNISWAP_V3_ROUTER_2 = "0x68b3465833fb72a70ecdf485e0e4c7bd8665fc45"
UNISWAP_V3_ROUTERS = [
"0xe592427a0aece92de3edee1f18e0157c05861564", # UniswapV3SwapRouter
"0x68b3465833fb72a70ecdf485e0e4c7bd8665fc45", # UniswapV3SwapRouter02
"0xef1c6e67703c7bd7107eed8303fbe6ec2554bf6b", # UniswapV3UniversalRouter
"0x3fc91a3afd70395cd496c647d5a6cc9d4b2b7fad", # UniswapV3UniversalRouter02
]
def get_sandwiches(swaps: List[Swap]) -> List[Sandwich]:
@ -37,8 +41,7 @@ def _get_sandwich_starting_with_swap(
if sandwicher_address in [
UNISWAP_V2_ROUTER,
UNISWAP_V3_ROUTER,
UNISWAP_V3_ROUTER_2,
*UNISWAP_V3_ROUTERS,
]:
return None

View File

@ -13,6 +13,7 @@ class ABIDescriptionType(str, Enum):
fallback = "fallback"
event = "event"
receive = "receive"
error = "error"
NON_FUNCTION_DESCRIPTION_TYPES = Union[
@ -20,6 +21,7 @@ NON_FUNCTION_DESCRIPTION_TYPES = Union[
Literal[ABIDescriptionType.fallback],
Literal[ABIDescriptionType.event],
Literal[ABIDescriptionType.receive],
Literal[ABIDescriptionType.error],
]

View File

@ -34,6 +34,8 @@ def is_known_router_address(address):
"0x11111254369792b2Ca5d084aB5eEA397cA8fa48B", # 1inch v1 router
"0x111111125434b319222cdbf8c261674adb56f3ae", # 1inch v2 router
"0x11111112542d85b3ef69ae05771c2dccff4faa26", # 1inch v3 router
"0x1111111254fb6c44bac0bed2854e76f90643097d" # 1inch v4 router
"0x1111111254eeb25477b68fb85ed929f73a960582" # 1inch v5 router
"0xa356867fdcea8e71aeaf87805808803806231fdc", # DODO
"0xdef1c0ded9bec7f1a1670819833240f027b25eff", # 0x proxy
"0x90f765f63e7dc5ae97d6c576bf693fb6af41c129", # Set Trade
@ -41,17 +43,21 @@ def is_known_router_address(address):
"0x9509665d015bfe3c77aa5ad6ca20c8afa1d98989", # Paraswap
"0x86969d29F5fd327E1009bA66072BE22DB6017cC6", # Paraswap v2
"0xf90e98f3d8dce44632e5020abf2e122e0f99dfab", # Paraswap v3
"0x1bD435F3C054b6e901B7b108a0ab7617C808677b", # Paraswap v4
"0x57805e5a227937bac2b0fdacaa30413ddac6b8e1", # Furucombo
"0x17e8ca1b4798b97602895f63206afcd1fc90ca5f", # Furucombo proxy
"0x881d40237659c251811cec9c364ef91dc08d300c", # Metamask swap
"0x745daa146934b27e3f0b6bff1a6e36b9b90fb131", # DEX.ag
"0xb2be281e8b11b47fec825973fc8bb95332022a54", # Zerion SDK
"0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D", # UniswapV2Router02
"0xd9e1cE17f2641f24aE83637ab66a2cca9C378B9F", # SushiswapV2Router02
"0xE592427A0AEce92De3Edee1F18E0157C05861564", # Uniswap v3 router
"0x3E66B66Fd1d0b02fDa6C811Da9E0547970DB2f21", # Balance exchange proxy
"0x1bD435F3C054b6e901B7b108a0ab7617C808677b", # Paraswap v4
"0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F", # SNX proxy synth issuer
"0xd9e1cE17f2641f24aE83637ab66a2cca9C378B9F", # SushiswapV2Router02
"0xf164fC0Ec4E93095b804a4795bBe1e041497b92a", # UniswapV2Router
"0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D", # UniswapV2Router02
"0xE592427A0AEce92De3Edee1F18E0157C05861564", # UniswapV3SwapRouter
"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45", # UniswapV3SwapRouter02
"0xEf1c6E67703c7BD7107eed8303Fbe6EC2554BF6B", # UniswapV3UniversalRouter
"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD", # UniswapV3UniversalRouter02
]
return address in known_router_addresses