Transaction Hash:
Block:
15911921 at Nov-06-2022 03:37:59 PM +UTC
Transaction Fee:
0.00351383328512064 ETH
$8.94
Gas Used:
226,432 Gas / 15.518271645 Gwei
Emitted Events:
266 |
ERC721Standalone.Transfer( from=0xd3834caa0f19eb3b4f19febf11efa92983b403a5, to=[Sender] 0xb681e94cadf59bb445dd30439912e3e8e6c8ea32, tokenId=139 )
|
267 |
ERC1967Proxy.0x61cbb2a3dee0b6064c2e681aadd61677fb4ef319f0b547508d495626f5a62f64( 0x61cbb2a3dee0b6064c2e681aadd61677fb4ef319f0b547508d495626f5a62f64, 0x000000000000000000000000d3834caa0f19eb3b4f19febf11efa92983b403a5, 0x000000000000000000000000b681e94cadf59bb445dd30439912e3e8e6c8ea32, 0000000000000000000000000000000000000000000000000000000000000080, 885095a61f1da0b45b3846ef9fc5c074dfde1c030facf2c3a54821aa656fe9d2, 00000000000000000000000000000000000000000000000000000000000002a0, faa34f93db3737c697e62f45b6e5be375f338fa70346fac6a8b9d8a31bfade2f, 000000000000000000000000d3834caa0f19eb3b4f19febf11efa92983b403a5, 0000000000000000000000000000000000000000000000000000000000000001, 00000000000000000000000000000000006411739da1c40b106f8511de5d1fac, 0000000000000000000000006f3aca0d7d5d8639e314bd20b79abb3e51c06f47, 000000000000000000000000000000000000000000000000000000000000008b, 0000000000000000000000000000000000000000000000000000000000000001, 0000000000000000000000000000000000000000000000000000000000000000, 00000000000000000000000000000000000000000000000000037b4e07e14000, 0000000000000000000000000000000000000000000000000000000063677199, 00000000000000000000000000000000000000000000000000000000638ee315, 00000000000000000000000000000000000000000000000000000000000001a0, 000000000000000000000000000000003e481f1bfff73505fd6a129f91d86bda, 0000000000000000000000000000000000000000000000000000000000000200, 0000000000000000000000000000000000000000000000000000000000000001, 00000000000000000000000000000000000000000000000000000000000001f4, 0000000000000000000000005f503c8b9d7f130d5e379c3c88b860ae1eb42b43, 0000000000000000000000000000000000000000000000000000000000000000, 000000000000000000000000b681e94cadf59bb445dd30439912e3e8e6c8ea32, 0000000000000000000000000000000000000000000000000000000000000000, 00000000000000000000000000000000006411739da1c40b106f8511de5d1fac, 0000000000000000000000006f3aca0d7d5d8639e314bd20b79abb3e51c06f47, 000000000000000000000000000000000000000000000000000000000000008b, 0000000000000000000000000000000000000000000000000000000000000001, 0000000000000000000000000000000000000000000000000000000000000000, 00000000000000000000000000000000000000000000000000037b4e07e14000, 000000000000000000000000000000000000000000000000000000006367c6b1, 000000000000000000000000000000000000000000000000000000006367e2d1, 00000000000000000000000000000000000000000000000000000000000001a0, 00000000000000000000000000000000c6774583d484b1ff5d288ccd4c4d2cfd, 00000000000000000000000000000000000000000000000000000000000001c0, 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000000000000000000 )
|
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x00000000...830B95127 | (Blur.io: Marketplace) | ||||
0x5F503c8b...e1EB42b43 | 0.821275135773297599 Eth | 0.821324135773297599 Eth | 0.000049 | ||
0x690B9A9E...Db4FaC990
Miner
| (builder0x69) | 2.895410172974344662 Eth | 2.895749820974344662 Eth | 0.000339648 | |
0x6f3Aca0D...E51c06f47 | |||||
0xb681e94c...8e6C8eA32 |
0.042070131914452968 Eth
Nonce: 159
|
0.037576298629332328 Eth
Nonce: 160
| 0.00449383328512064 | ||
0xD3834caa...983B403a5 | 0.00100369860661 Eth | 0.00193469860661 Eth | 0.000931 |
Execution Trace
ETH 0.00098
ERC1967Proxy.9a1fc3a7( )
ETH 0.00098
BlurExchange.execute( sell=[{name:order, type:tuple, order:1, indexed:false, value:[{name:trader, type:address, order:1, indexed:false, value:0xD3834caa0f19EB3B4f19FEBF11eFa92983B403a5, valueString:0xD3834caa0f19EB3B4f19FEBF11eFa92983B403a5}, {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:0x6f3Aca0D7d5d8639e314Bd20b79AbB3E51c06f47, valueString:0x6f3Aca0D7d5d8639e314Bd20b79AbB3E51c06f47}, {name:tokenId, type:uint256, order:5, indexed:false, value:139, valueString:139}, {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:980000000000000, valueString:980000000000000}, {name:listingTime, type:uint256, order:9, indexed:false, value:1667723673, valueString:1667723673}, {name:expirationTime, type:uint256, order:10, indexed:false, value:1670308629, valueString:1670308629}, {name:fees, type:tuple[], order:11, indexed:false}, {name:salt, type:uint256, order:12, indexed:false, value:82786612085554925374016037369960491994, valueString:82786612085554925374016037369960491994}, {name:extraParams, type:bytes, order:13, indexed:false, value:0x, valueString:0x}], valueString:[{name:trader, type:address, order:1, indexed:false, value:0xD3834caa0f19EB3B4f19FEBF11eFa92983B403a5, valueString:0xD3834caa0f19EB3B4f19FEBF11eFa92983B403a5}, {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:0x6f3Aca0D7d5d8639e314Bd20b79AbB3E51c06f47, valueString:0x6f3Aca0D7d5d8639e314Bd20b79AbB3E51c06f47}, {name:tokenId, type:uint256, order:5, indexed:false, value:139, valueString:139}, {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:980000000000000, valueString:980000000000000}, {name:listingTime, type:uint256, order:9, indexed:false, value:1667723673, valueString:1667723673}, {name:expirationTime, type:uint256, order:10, indexed:false, value:1670308629, valueString:1670308629}, {name:fees, type:tuple[], order:11, indexed:false}, {name:salt, type:uint256, order:12, indexed:false, value:82786612085554925374016037369960491994, valueString:82786612085554925374016037369960491994}, {name:extraParams, type:bytes, order:13, indexed:false, value:0x, valueString:0x}]}, {name:v, type:uint8, order:2, indexed:false, value:28, valueString:28}, {name:r, type:bytes32, order:3, indexed:false, value:8E93D457401DBAED0C3A0605C88FFD841DA76E920F928A4FC345A490CA1AD5FE, valueString:8E93D457401DBAED0C3A0605C88FFD841DA76E920F928A4FC345A490CA1AD5FE}, {name:s, type:bytes32, order:4, indexed:false, value:4FC98FCCD6D907A53D33257EB3F6A18AD0A3C30C2A37EB76D741A53E5A83C5B4, valueString:4FC98FCCD6D907A53D33257EB3F6A18AD0A3C30C2A37EB76D741A53E5A83C5B4}, {name:extraSignature, type:bytes, order:5, indexed:false, value:0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000029DB102EAABB454172A821C622E5DE54F0D4F64483E729D928B4FF5006F3D0103EA10DFB848F1053FA13393CDAB3D3713EAB7233EAF9CA6BC20FA19DEF117CFF0, valueString:0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000029DB102EAABB454172A821C622E5DE54F0D4F64483E729D928B4FF5006F3D0103EA10DFB848F1053FA13393CDAB3D3713EAB7233EAF9CA6BC20FA19DEF117CFF0}, {name:signatureVersion, type:uint8, order:6, indexed:false, value:1, valueString:1}, {name:blockNumber, type:uint256, order:7, indexed:false, value:15911919, valueString:15911919}], buy=[{name:order, type:tuple, order:1, indexed:false, value:[{name:trader, type:address, order:1, indexed:false, value:0xb681e94cadf59bb445Dd30439912E3e8e6C8eA32, valueString:0xb681e94cadf59bb445Dd30439912E3e8e6C8eA32}, {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:0x6f3Aca0D7d5d8639e314Bd20b79AbB3E51c06f47, valueString:0x6f3Aca0D7d5d8639e314Bd20b79AbB3E51c06f47}, {name:tokenId, type:uint256, order:5, indexed:false, value:139, valueString:139}, {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:980000000000000, valueString:980000000000000}, {name:listingTime, type:uint256, order:9, indexed:false, value:1667745457, valueString:1667745457}, {name:expirationTime, type:uint256, order:10, indexed:false, value:1667752657, valueString:1667752657}, {name:fees, type:tuple[], order:11, indexed:false}, {name:salt, type:uint256, order:12, indexed:false, value:263806436422502169516450666515106966781, valueString:263806436422502169516450666515106966781}, {name:extraParams, type:bytes, order:13, indexed:false, value:0x, valueString:0x}], valueString:[{name:trader, type:address, order:1, indexed:false, value:0xb681e94cadf59bb445Dd30439912E3e8e6C8eA32, valueString:0xb681e94cadf59bb445Dd30439912E3e8e6C8eA32}, {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:0x6f3Aca0D7d5d8639e314Bd20b79AbB3E51c06f47, valueString:0x6f3Aca0D7d5d8639e314Bd20b79AbB3E51c06f47}, {name:tokenId, type:uint256, order:5, indexed:false, value:139, valueString:139}, {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:980000000000000, valueString:980000000000000}, {name:listingTime, type:uint256, order:9, indexed:false, value:1667745457, valueString:1667745457}, {name:expirationTime, type:uint256, order:10, indexed:false, value:1667752657, valueString:1667752657}, {name:fees, type:tuple[], order:11, indexed:false}, {name:salt, type:uint256, order:12, indexed:false, value:263806436422502169516450666515106966781, valueString:263806436422502169516450666515106966781}, {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:15911919, valueString:15911919}] )
- ETH 0.00098
MerkleVerifier._computeRoot( ) => ( 48558302249C837BF415CB6C18B871CECDB4AD31FD09950734F7FEA3E3A13047 )
-
Null: 0x000...001.7b0fa757( )
-
PolicyManager.isPolicyWhitelisted( policy=0x00000000006411739DA1c40B106F8511de5D1FAC ) => ( True )
-
StandardPolicyERC721.canMatchMakerAsk( makerAsk=[{name:trader, type:address, order:1, indexed:false, value:0xD3834caa0f19EB3B4f19FEBF11eFa92983B403a5, valueString:0xD3834caa0f19EB3B4f19FEBF11eFa92983B403a5}, {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:0x6f3Aca0D7d5d8639e314Bd20b79AbB3E51c06f47, valueString:0x6f3Aca0D7d5d8639e314Bd20b79AbB3E51c06f47}, {name:tokenId, type:uint256, order:5, indexed:false, value:139, valueString:139}, {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:980000000000000, valueString:980000000000000}, {name:listingTime, type:uint256, order:9, indexed:false, value:1667723673, valueString:1667723673}, {name:expirationTime, type:uint256, order:10, indexed:false, value:1670308629, valueString:1670308629}, {name:fees, type:tuple[], order:11, indexed:false}, {name:salt, type:uint256, order:12, indexed:false, value:82786612085554925374016037369960491994, valueString:82786612085554925374016037369960491994}, {name:extraParams, type:bytes, order:13, indexed:false, value:0x, valueString:0x}], takerBid=[{name:trader, type:address, order:1, indexed:false, value:0xb681e94cadf59bb445Dd30439912E3e8e6C8eA32, valueString:0xb681e94cadf59bb445Dd30439912E3e8e6C8eA32}, {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:0x6f3Aca0D7d5d8639e314Bd20b79AbB3E51c06f47, valueString:0x6f3Aca0D7d5d8639e314Bd20b79AbB3E51c06f47}, {name:tokenId, type:uint256, order:5, indexed:false, value:139, valueString:139}, {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:980000000000000, valueString:980000000000000}, {name:listingTime, type:uint256, order:9, indexed:false, value:1667745457, valueString:1667745457}, {name:expirationTime, type:uint256, order:10, indexed:false, value:1667752657, valueString:1667752657}, {name:fees, type:tuple[], order:11, indexed:false}, {name:salt, type:uint256, order:12, indexed:false, value:263806436422502169516450666515106966781, valueString:263806436422502169516450666515106966781}, {name:extraParams, type:bytes, order:13, indexed:false, value:0x, valueString:0x}] ) => ( True, 980000000000000, 139, 1, 0 )
- ETH 0.000049
0x5f503c8b9d7f130d5e379c3c88b860ae1eb42b43.CALL( )
- ETH 0.000931
0xd3834caa0f19eb3b4f19febf11efa92983b403a5.CALL( )
ExecutionDelegate.transferERC721( collection=0x6f3Aca0D7d5d8639e314Bd20b79AbB3E51c06f47, from=0xD3834caa0f19EB3B4f19FEBF11eFa92983B403a5, to=0xb681e94cadf59bb445Dd30439912E3e8e6C8eA32, tokenId=139 )
-
ERC721Standalone.safeTransferFrom( from=0xD3834caa0f19EB3B4f19FEBF11eFa92983B403a5, to=0xb681e94cadf59bb445Dd30439912E3e8e6C8eA32, tokenId=139 )
-
- ETH 0.00098
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 7: ERC1967Proxy
File 2 of 7: ERC721Standalone
File 3 of 7: BlurExchange
File 4 of 7: MerkleVerifier
File 5 of 7: PolicyManager
File 6 of 7: StandardPolicyERC721
File 7 of 7: 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 7: ERC721Standalone
12345678910111213141516// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.5.0) (access/AccessControl.sol)pragma solidity ^0.8.0;import "./IAccessControl.sol";import "../utils/Context.sol";import "../utils/Strings.sol";import "../utils/introspection/ERC165.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 3 of 7: 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 7: MerkleVerifier
12345678910111213141516// SPDX-License-Identifier: MITpragma solidity 0.8.17;/*** @title MerkleVerifier* @dev Utility functions for Merkle tree computations*/library MerkleVerifier {error InvalidProof();/*** @dev Verify the merkle proof* @param leaf leaf* @param root root* @param proof proof*/function _verifyProof(bytes32 leaf,
File 5 of 7: 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 6 of 7: 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 7 of 7: 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;