Transaction Hash:
Block:
16102417 at Dec-03-2022 06:11:59 AM +UTC
Transaction Fee:
0.00220678416 ETH
$4.40
Gas Used:
215,928 Gas / 10.22 Gwei
Emitted Events:
160 |
GenArt721CoreV3_Explorations.Approval( owner=0x17abeac1c5e5ac1545d800190b7121e925394fd2, approved=0x00000000...000000000, tokenId=8301 )
|
161 |
GenArt721CoreV3_Explorations.Transfer( from=0x17abeac1c5e5ac1545d800190b7121e925394fd2, to=[Sender] 0x90dc9b5321bc16def1cd97f259f29e28230c8fdd, tokenId=8301 )
|
162 |
ERC1967Proxy.0x61cbb2a3dee0b6064c2e681aadd61677fb4ef319f0b547508d495626f5a62f64( 0x61cbb2a3dee0b6064c2e681aadd61677fb4ef319f0b547508d495626f5a62f64, 0x00000000000000000000000017abeac1c5e5ac1545d800190b7121e925394fd2, 0x00000000000000000000000090dc9b5321bc16def1cd97f259f29e28230c8fdd, 0000000000000000000000000000000000000000000000000000000000000080, 6a268cfb049a33caab8d4ccdbdc70e12729a86071ec4a6450ad0fa8a4831b179, 00000000000000000000000000000000000000000000000000000000000002a0, e16ebf884b69e3d02c794580ce8c566f52524518c4a64e7ca691a8625d03006c, 00000000000000000000000017abeac1c5e5ac1545d800190b7121e925394fd2, 0000000000000000000000000000000000000000000000000000000000000001, 00000000000000000000000000000000006411739da1c40b106f8511de5d1fac, 000000000000000000000000942bc2d3e7a589fe5bd4a5c6ef9727dfd82f5c8a, 000000000000000000000000000000000000000000000000000000000000206d, 0000000000000000000000000000000000000000000000000000000000000001, 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000ad5f57690a00000, 000000000000000000000000000000000000000000000000000000006388a714, 000000000000000000000000000000000000000000000000000000006391e193, 00000000000000000000000000000000000000000000000000000000000001a0, 00000000000000000000000000000000f9e907449c13be234749aa6bf98fa04f, 0000000000000000000000000000000000000000000000000000000000000200, 0000000000000000000000000000000000000000000000000000000000000001, 000000000000000000000000000000000000000000000000000000000000000a, 0000000000000000000000006c093fe8bc59e1e0cae2ec10f0b717d3d182056b, 0000000000000000000000000000000000000000000000000000000000000000, 00000000000000000000000090dc9b5321bc16def1cd97f259f29e28230c8fdd, 0000000000000000000000000000000000000000000000000000000000000000, 00000000000000000000000000000000006411739da1c40b106f8511de5d1fac, 000000000000000000000000942bc2d3e7a589fe5bd4a5c6ef9727dfd82f5c8a, 000000000000000000000000000000000000000000000000000000000000206d, 0000000000000000000000000000000000000000000000000000000000000001, 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000ad5f57690a00000, 00000000000000000000000000000000000000000000000000000000638ad8a1, 00000000000000000000000000000000000000000000000000000000638af4c1, 00000000000000000000000000000000000000000000000000000000000001a0, 0000000000000000000000000000000086938bef2d411e22c5f4a44a9620c775, 00000000000000000000000000000000000000000000000000000000000001c0, 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000000000000000000 )
|
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x00000000...830B95127 | (Blur.io: Marketplace) | ||||
0x17abEAc1...925394fD2 | 0.022317638947828095 Eth | 0.802336838947828095 Eth | 0.7800192 | ||
0x6C093Fe8...3D182056B | 221.917583065280938871 Eth | 221.918363865280938871 Eth | 0.0007808 | ||
0x90DC9b53...8230C8fdd |
0.839295348639266862 Eth
Nonce: 145
|
0.056288564479266862 Eth
Nonce: 146
| 0.78300678416 | ||
0x942BC2d3...Fd82F5C8a | |||||
0xF0bAfD58...5cB038C61
Miner
| (Fee Recipient: 0xF0...C61) | 20.609079544873813193 Eth | 20.609085560668487657 Eth | 0.000006015794674464 |
Execution Trace
ETH 0.7808
ERC1967Proxy.9a1fc3a7( )
ETH 0.7808
BlurExchange.execute( sell=[{name:order, type:tuple, order:1, indexed:false, value:[{name:trader, type:address, order:1, indexed:false, value:0x17abEAc1C5E5AC1545D800190B7121E925394fD2, valueString:0x17abEAc1C5E5AC1545D800190B7121E925394fD2}, {name:side, type:uint8, order:2, indexed:false, value:1, valueString:1}, {name:matchingPolicy, type:address, order:3, indexed:false, value:0x00000000006411739DA1c40B106F8511de5D1FAC, valueString:0x00000000006411739DA1c40B106F8511de5D1FAC}, {name:collection, type:address, order:4, indexed:false, value:0x942BC2d3e7a589FE5bd4A5C6eF9727DFd82F5C8a, valueString:0x942BC2d3e7a589FE5bd4A5C6eF9727DFd82F5C8a}, {name:tokenId, type:uint256, order:5, indexed:false, value:8301, valueString:8301}, {name:amount, type:uint256, order:6, indexed:false, value:1, valueString:1}, {name:paymentToken, type:address, order:7, indexed:false, value:0x0000000000000000000000000000000000000000, valueString:0x0000000000000000000000000000000000000000}, {name:price, type:uint256, order:8, indexed:false, value:780800000000000000, valueString:780800000000000000}, {name:listingTime, type:uint256, order:9, indexed:false, value:1669900052, valueString:1669900052}, {name:expirationTime, type:uint256, order:10, indexed:false, value:1670504851, valueString:1670504851}, {name:fees, type:tuple[], order:11, indexed:false}, {name:salt, type:uint256, order:12, indexed:false, value:332187723531168472745270608364789801039, valueString:332187723531168472745270608364789801039}, {name:extraParams, type:bytes, order:13, indexed:false, value:0x, valueString:0x}], valueString:[{name:trader, type:address, order:1, indexed:false, value:0x17abEAc1C5E5AC1545D800190B7121E925394fD2, valueString:0x17abEAc1C5E5AC1545D800190B7121E925394fD2}, {name:side, type:uint8, order:2, indexed:false, value:1, valueString:1}, {name:matchingPolicy, type:address, order:3, indexed:false, value:0x00000000006411739DA1c40B106F8511de5D1FAC, valueString:0x00000000006411739DA1c40B106F8511de5D1FAC}, {name:collection, type:address, order:4, indexed:false, value:0x942BC2d3e7a589FE5bd4A5C6eF9727DFd82F5C8a, valueString:0x942BC2d3e7a589FE5bd4A5C6eF9727DFd82F5C8a}, {name:tokenId, type:uint256, order:5, indexed:false, value:8301, valueString:8301}, {name:amount, type:uint256, order:6, indexed:false, value:1, valueString:1}, {name:paymentToken, type:address, order:7, indexed:false, value:0x0000000000000000000000000000000000000000, valueString:0x0000000000000000000000000000000000000000}, {name:price, type:uint256, order:8, indexed:false, value:780800000000000000, valueString:780800000000000000}, {name:listingTime, type:uint256, order:9, indexed:false, value:1669900052, valueString:1669900052}, {name:expirationTime, type:uint256, order:10, indexed:false, value:1670504851, valueString:1670504851}, {name:fees, type:tuple[], order:11, indexed:false}, {name:salt, type:uint256, order:12, indexed:false, value:332187723531168472745270608364789801039, valueString:332187723531168472745270608364789801039}, {name:extraParams, type:bytes, order:13, indexed:false, value:0x, valueString:0x}]}, {name:v, type:uint8, order:2, indexed:false, value:27, valueString:27}, {name:r, type:bytes32, order:3, indexed:false, value:D0949BE951769AD9F8E4A0E15F270ED5CCD021AB8CF17B63DB442B73DB83CAAC, valueString:D0949BE951769AD9F8E4A0E15F270ED5CCD021AB8CF17B63DB442B73DB83CAAC}, {name:s, type:bytes32, order:4, indexed:false, value:1059DDEF6C4DDC2CC75EAC606C966122258D081716C270DC5EEE877AE954C4E5, valueString:1059DDEF6C4DDC2CC75EAC606C966122258D081716C270DC5EEE877AE954C4E5}, {name:extraSignature, type:bytes, order:5, indexed:false, value:0x, valueString:0x}, {name:signatureVersion, type:uint8, order:6, indexed:false, value:0, valueString:0}, {name:blockNumber, type:uint256, order:7, indexed:false, value:16102374, valueString:16102374}], buy=[{name:order, type:tuple, order:1, indexed:false, value:[{name:trader, type:address, order:1, indexed:false, value:0x90DC9b5321Bc16DEf1cD97F259F29E28230C8fdd, valueString:0x90DC9b5321Bc16DEf1cD97F259F29E28230C8fdd}, {name:side, type:uint8, order:2, indexed:false, value:0, valueString:0}, {name:matchingPolicy, type:address, order:3, indexed:false, value:0x00000000006411739DA1c40B106F8511de5D1FAC, valueString:0x00000000006411739DA1c40B106F8511de5D1FAC}, {name:collection, type:address, order:4, indexed:false, value:0x942BC2d3e7a589FE5bd4A5C6eF9727DFd82F5C8a, valueString:0x942BC2d3e7a589FE5bd4A5C6eF9727DFd82F5C8a}, {name:tokenId, type:uint256, order:5, indexed:false, value:8301, valueString:8301}, {name:amount, type:uint256, order:6, indexed:false, value:1, valueString:1}, {name:paymentToken, type:address, order:7, indexed:false, value:0x0000000000000000000000000000000000000000, valueString:0x0000000000000000000000000000000000000000}, {name:price, type:uint256, order:8, indexed:false, value:780800000000000000, valueString:780800000000000000}, {name:listingTime, type:uint256, order:9, indexed:false, value:1670043809, valueString:1670043809}, {name:expirationTime, type:uint256, order:10, indexed:false, value:1670051009, valueString:1670051009}, {name:fees, type:tuple[], order:11, indexed:false}, {name:salt, type:uint256, order:12, indexed:false, value:178882657277854643054553212707389097845, valueString:178882657277854643054553212707389097845}, {name:extraParams, type:bytes, order:13, indexed:false, value:0x, valueString:0x}], valueString:[{name:trader, type:address, order:1, indexed:false, value:0x90DC9b5321Bc16DEf1cD97F259F29E28230C8fdd, valueString:0x90DC9b5321Bc16DEf1cD97F259F29E28230C8fdd}, {name:side, type:uint8, order:2, indexed:false, value:0, valueString:0}, {name:matchingPolicy, type:address, order:3, indexed:false, value:0x00000000006411739DA1c40B106F8511de5D1FAC, valueString:0x00000000006411739DA1c40B106F8511de5D1FAC}, {name:collection, type:address, order:4, indexed:false, value:0x942BC2d3e7a589FE5bd4A5C6eF9727DFd82F5C8a, valueString:0x942BC2d3e7a589FE5bd4A5C6eF9727DFd82F5C8a}, {name:tokenId, type:uint256, order:5, indexed:false, value:8301, valueString:8301}, {name:amount, type:uint256, order:6, indexed:false, value:1, valueString:1}, {name:paymentToken, type:address, order:7, indexed:false, value:0x0000000000000000000000000000000000000000, valueString:0x0000000000000000000000000000000000000000}, {name:price, type:uint256, order:8, indexed:false, value:780800000000000000, valueString:780800000000000000}, {name:listingTime, type:uint256, order:9, indexed:false, value:1670043809, valueString:1670043809}, {name:expirationTime, type:uint256, order:10, indexed:false, value:1670051009, valueString:1670051009}, {name:fees, type:tuple[], order:11, indexed:false}, {name:salt, type:uint256, order:12, indexed:false, value:178882657277854643054553212707389097845, valueString:178882657277854643054553212707389097845}, {name:extraParams, type:bytes, order:13, indexed:false, value:0x, valueString:0x}]}, {name:v, type:uint8, order:2, indexed:false, value:0, valueString:0}, {name:r, type:bytes32, order:3, indexed:false, value:0000000000000000000000000000000000000000000000000000000000000000, valueString:0000000000000000000000000000000000000000000000000000000000000000}, {name:s, type:bytes32, order:4, indexed:false, value:0000000000000000000000000000000000000000000000000000000000000000, valueString:0000000000000000000000000000000000000000000000000000000000000000}, {name:extraSignature, type:bytes, order:5, indexed:false, value:0x, valueString:0x}, {name:signatureVersion, type:uint8, order:6, indexed:false, value:0, valueString:0}, {name:blockNumber, type:uint256, order:7, indexed:false, value:16102374, valueString:16102374}] )
-
Null: 0x000...001.4fa08841( )
-
PolicyManager.isPolicyWhitelisted( policy=0x00000000006411739DA1c40B106F8511de5D1FAC ) => ( True )
-
StandardPolicyERC721.canMatchMakerAsk( makerAsk=[{name:trader, type:address, order:1, indexed:false, value:0x17abEAc1C5E5AC1545D800190B7121E925394fD2, valueString:0x17abEAc1C5E5AC1545D800190B7121E925394fD2}, {name:side, type:uint8, order:2, indexed:false, value:1, valueString:1}, {name:matchingPolicy, type:address, order:3, indexed:false, value:0x00000000006411739DA1c40B106F8511de5D1FAC, valueString:0x00000000006411739DA1c40B106F8511de5D1FAC}, {name:collection, type:address, order:4, indexed:false, value:0x942BC2d3e7a589FE5bd4A5C6eF9727DFd82F5C8a, valueString:0x942BC2d3e7a589FE5bd4A5C6eF9727DFd82F5C8a}, {name:tokenId, type:uint256, order:5, indexed:false, value:8301, valueString:8301}, {name:amount, type:uint256, order:6, indexed:false, value:1, valueString:1}, {name:paymentToken, type:address, order:7, indexed:false, value:0x0000000000000000000000000000000000000000, valueString:0x0000000000000000000000000000000000000000}, {name:price, type:uint256, order:8, indexed:false, value:780800000000000000, valueString:780800000000000000}, {name:listingTime, type:uint256, order:9, indexed:false, value:1669900052, valueString:1669900052}, {name:expirationTime, type:uint256, order:10, indexed:false, value:1670504851, valueString:1670504851}, {name:fees, type:tuple[], order:11, indexed:false}, {name:salt, type:uint256, order:12, indexed:false, value:332187723531168472745270608364789801039, valueString:332187723531168472745270608364789801039}, {name:extraParams, type:bytes, order:13, indexed:false, value:0x, valueString:0x}], takerBid=[{name:trader, type:address, order:1, indexed:false, value:0x90DC9b5321Bc16DEf1cD97F259F29E28230C8fdd, valueString:0x90DC9b5321Bc16DEf1cD97F259F29E28230C8fdd}, {name:side, type:uint8, order:2, indexed:false, value:0, valueString:0}, {name:matchingPolicy, type:address, order:3, indexed:false, value:0x00000000006411739DA1c40B106F8511de5D1FAC, valueString:0x00000000006411739DA1c40B106F8511de5D1FAC}, {name:collection, type:address, order:4, indexed:false, value:0x942BC2d3e7a589FE5bd4A5C6eF9727DFd82F5C8a, valueString:0x942BC2d3e7a589FE5bd4A5C6eF9727DFd82F5C8a}, {name:tokenId, type:uint256, order:5, indexed:false, value:8301, valueString:8301}, {name:amount, type:uint256, order:6, indexed:false, value:1, valueString:1}, {name:paymentToken, type:address, order:7, indexed:false, value:0x0000000000000000000000000000000000000000, valueString:0x0000000000000000000000000000000000000000}, {name:price, type:uint256, order:8, indexed:false, value:780800000000000000, valueString:780800000000000000}, {name:listingTime, type:uint256, order:9, indexed:false, value:1670043809, valueString:1670043809}, {name:expirationTime, type:uint256, order:10, indexed:false, value:1670051009, valueString:1670051009}, {name:fees, type:tuple[], order:11, indexed:false}, {name:salt, type:uint256, order:12, indexed:false, value:178882657277854643054553212707389097845, valueString:178882657277854643054553212707389097845}, {name:extraParams, type:bytes, order:13, indexed:false, value:0x, valueString:0x}] ) => ( True, 780800000000000000, 8301, 1, 0 )
- ETH 0.0007808
0x6c093fe8bc59e1e0cae2ec10f0b717d3d182056b.CALL( )
- ETH 0.7800192
0x17abeac1c5e5ac1545d800190b7121e925394fd2.CALL( )
ExecutionDelegate.transferERC721( collection=0x942BC2d3e7a589FE5bd4A5C6eF9727DFd82F5C8a, from=0x17abEAc1C5E5AC1545D800190B7121E925394fD2, to=0x90DC9b5321Bc16DEf1cD97F259F29E28230C8fdd, tokenId=8301 )
-
GenArt721CoreV3_Explorations.safeTransferFrom( from=0x17abEAc1C5E5AC1545D800190B7121E925394fD2, to=0x90DC9b5321Bc16DEf1cD97F259F29E28230C8fdd, tokenId=8301 )
-
-
execute[BlurExchange (ln:101)]
_hashOrder[BlurExchange (ln:108)]
_hashOrder[BlurExchange (ln:109)]
_validateOrderParameters[BlurExchange (ln:110)]
_canSettleOrder[BlurExchange (ln:222)]
_validateOrderParameters[BlurExchange (ln:111)]
_canSettleOrder[BlurExchange (ln:222)]
_validateSignatures[BlurExchange (ln:112)]
_validateUserAuthorization[BlurExchange (ln:252)]
_hashToSign[BlurExchange (ln:302)]
decode[BlurExchange (ln:305)]
_computeRoot[BlurExchange (ln:306)]
_hashPair[MerkleVerifier (ln:1001)]
_efficientHash[MerkleVerifier (ln:1006)]
_efficientHash[MerkleVerifier (ln:1006)]
_hashToSignRoot[BlurExchange (ln:307)]
_verify[BlurExchange (ln:309)]
ecrecover[BlurExchange (ln:351)]
_validateOracleAuthorization[BlurExchange (ln:268)]
_hashToSignOracle[BlurExchange (ln:324)]
decode[BlurExchange (ln:327)]
decode[BlurExchange (ln:330)]
_verify[BlurExchange (ln:333)]
ecrecover[BlurExchange (ln:351)]
_validateSignatures[BlurExchange (ln:113)]
_validateUserAuthorization[BlurExchange (ln:252)]
_hashToSign[BlurExchange (ln:302)]
decode[BlurExchange (ln:305)]
_computeRoot[BlurExchange (ln:306)]
_hashPair[MerkleVerifier (ln:1001)]
_efficientHash[MerkleVerifier (ln:1006)]
_efficientHash[MerkleVerifier (ln:1006)]
_hashToSignRoot[BlurExchange (ln:307)]
_verify[BlurExchange (ln:309)]
ecrecover[BlurExchange (ln:351)]
_validateOracleAuthorization[BlurExchange (ln:268)]
_hashToSignOracle[BlurExchange (ln:324)]
decode[BlurExchange (ln:327)]
decode[BlurExchange (ln:330)]
_verify[BlurExchange (ln:333)]
ecrecover[BlurExchange (ln:351)]
_canMatchOrders[BlurExchange (ln:114)]
isPolicyWhitelisted[BlurExchange (ln:371)]
canMatchMakerAsk[BlurExchange (ln:372)]
isPolicyWhitelisted[BlurExchange (ln:375)]
canMatchMakerBid[BlurExchange (ln:376)]
_executeFundsTransfer[BlurExchange (ln:118)]
_transferFees[BlurExchange (ln:402)]
_transferTo[BlurExchange (ln:422)]
call[BlurExchange (ln:449)]
payable[BlurExchange (ln:449)]
transferERC20[BlurExchange (ln:453)]
revert[BlurExchange (ln:455)]
_transferTo[BlurExchange (ln:404)]
call[BlurExchange (ln:449)]
payable[BlurExchange (ln:449)]
transferERC20[BlurExchange (ln:453)]
revert[BlurExchange (ln:455)]
_executeTokenTransfer[BlurExchange (ln:125)]
_exists[BlurExchange (ln:475)]
transferERC721[BlurExchange (ln:478)]
transferERC1155[BlurExchange (ln:480)]
OrdersMatched[BlurExchange (ln:133)]
File 1 of 6: ERC1967Proxy
File 2 of 6: GenArt721CoreV3_Explorations
File 3 of 6: BlurExchange
File 4 of 6: PolicyManager
File 5 of 6: StandardPolicyERC721
File 6 of 6: ExecutionDelegate
12345678910111213141516// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)pragma solidity 0.8.17;// OpenZeppelin Contracts v4.4.1 (proxy/Proxy.sol)/*** @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM* instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to* be specified by overriding the virtual {_implementation} function.** Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a* different contract through the {_delegate} function.** The success and return data of the delegated call will be returned back to the caller of the proxy.*/abstract contract Proxy {/**
File 2 of 6: GenArt721CoreV3_Explorations
12345678910111213141516// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity 0.8.17;// Created By: Art Blocks Inc.import "../interfaces/0.8.x/IRandomizerV2.sol";import "../interfaces/0.8.x/IAdminACLV0.sol";import "../interfaces/0.8.x/IGenArt721CoreContractV3.sol";import "../interfaces/0.8.x/IManifold.sol";import "@openzeppelin-4.7/contracts/utils/Strings.sol";import "@openzeppelin-4.7/contracts/access/Ownable.sol";import "../libs/0.8.x/ERC721_PackedHashSeed.sol";import "../libs/0.8.x/BytecodeStorage.sol";import "../libs/0.8.x/Bytes32Strings.sol";/*** @title Art Blocks ERC-721 core contract, V3_Explorations.* @author Art Blocks Inc.* @notice Privileged Roles and Ownership:
File 3 of 6: BlurExchange
12345678910111213141516// SPDX-License-Identifier: MITpragma solidity 0.8.17;import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";import "./lib/ReentrancyGuarded.sol";import "./lib/EIP712.sol";import "./lib/MerkleVerifier.sol";import "./interfaces/IBlurExchange.sol";import "./interfaces/IExecutionDelegate.sol";import "./interfaces/IPolicyManager.sol";import "./interfaces/IMatchingPolicy.sol";import {Side,SignatureVersion,AssetType,
File 4 of 6: PolicyManager
12345678910111213141516// SPDX-License-Identifier: MITpragma solidity 0.8.17;import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";import {IPolicyManager} from "./interfaces/IPolicyManager.sol";/*** @title PolicyManager* @dev Manages the policy whitelist for the Blur exchange*/contract PolicyManager is IPolicyManager, Ownable {using EnumerableSet for EnumerableSet.AddressSet;EnumerableSet.AddressSet private _whitelistedPolicies;event PolicyRemoved(address indexed policy);event PolicyWhitelisted(address indexed policy);/*** @notice Add matching policy
File 5 of 6: StandardPolicyERC721
12345678910111213141516// SPDX-License-Identifier: MITpragma solidity 0.8.17;import {Order, AssetType} from "../lib/OrderStructs.sol";import {IMatchingPolicy} from "../interfaces/IMatchingPolicy.sol";/*** @title StandardPolicyERC721* @dev Policy for matching orders at a fixed price for a specific ERC721 tokenId*/contract StandardPolicyERC721 is IMatchingPolicy {function canMatchMakerAsk(Order calldata makerAsk, Order calldata takerBid)externalpureoverridereturns (bool,uint256,
File 6 of 6: ExecutionDelegate
12345678910111213141516// SPDX-License-Identifier: MITpragma solidity 0.8.17;import "@openzeppelin/contracts/token/ERC20/IERC20.sol";import "@openzeppelin/contracts/token/ERC721/IERC721.sol";import "@openzeppelin/contracts/token/ERC1155/IERC1155.sol";import "@openzeppelin/contracts/access/Ownable.sol";import "@openzeppelin/contracts/utils/Address.sol";import {IExecutionDelegate} from "./interfaces/IExecutionDelegate.sol";/*** @title ExecutionDelegate* @dev Proxy contract to manage user token approvals*/contract ExecutionDelegate is IExecutionDelegate, Ownable {using Address for address;mapping(address => bool) public contracts;mapping(address => bool) public revokedApproval;